我打算使用緩存在我的Node.js應用程序,只是爲了避免數據庫中讀取操作。它只是少量的數據(而不是每次從數據庫讀取相同的數據)。我打算在每臺服務器上都有一個本地緩存。 我應該使用Node Cache(https://www.npmjs.com/package/node-cache)還是Redis?節點緩存VS Redis的用於簡單的緩存
這將是更快,效率呢?
我打算使用緩存在我的Node.js應用程序,只是爲了避免數據庫中讀取操作。它只是少量的數據(而不是每次從數據庫讀取相同的數據)。我打算在每臺服務器上都有一個本地緩存。 我應該使用Node Cache(https://www.npmjs.com/package/node-cache)還是Redis?節點緩存VS Redis的用於簡單的緩存
這將是更快,效率呢?
如果你打算在未來的縮放您的應用程序,你可以選擇Redis的
如果這就是你需要你的內存中去性能好一個小項目。
作爲一個初學者,我推薦使用內存中的緩存,但是使用控制機制的反轉機制能夠在使用redis之後輕鬆地重構這些內容。嘗試是這樣的:
// cache service
module.exports = (provider) => {
// provider here is an abstraction of redis or in memory node
// implement your logic
const save = (key, item) => {
provider.save(key, item);
// return promise callback etc
}
const getItem = (key) => {
provider.get(key);
}
return {
save,
getItem,
}
}
然後你只需要使用所需的供應商,你可以很容易地重構代碼後,無需更改應用中的所有文件。
這取決於你希望緩存對象的大小,你可以單獨使用Redis的,單獨或本地緩存,或兩者的組合。 Redis的會給你喜歡集中的緩存,從而更高的緩存命中率許多優點(作爲一個Web服務器設置緩存,所有其他Web服務器可以使用的值),而在節點緩存中的緩存每個服務器設置,因此具有較低的緩存命中率。 本地緩存的性能優點是避免了網絡呼叫,這是一個微不足道的開銷,如果你的目標是不是非常大,Redis的會給你良好的性能在這兩種情況下,如果你在本地承載它的Web服務器或專用的單獨的服務器。 如果你的對象很大,比如說MB很少,那麼網絡跳數是不可取的,你應該從數據庫或redis緩存中獲取對象,並在本地緩存它。
如果不是大量的數據,我會使用內存中的東西。但那只是我的個人意見。 – robertklep