节点缓存VS Redis的用于简单的缓存

问题描述:

我打算使用缓存在我的Node.js应用程序,只是为了避免数据库中读取操作。它只是少量的数据(而不是每次从数据库读取相同的数据)。我打算在每台服务器上都有一个本地缓存。 我应该使用Node Cache(https://www.npmjs.com/package/node-cache)还是Redis?节点缓存VS Redis的用于简单的缓存

这将是更快,效率呢?

+0

如果不是大量的数据,我会使用内存中的东西。但那只是我的个人意见。 – robertklep

如果你打算在未来的缩放您的应用程序,你可以选择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缓存中获取对象,并在本地缓存它。