节点caching与Redis进行简单caching

我打算在Node.js应用程序中使用caching,以避免数据库读取操作。 只有less量的数据(而不是每次从数据库读取相同的数据)。 我打算在每台服务器上都有一个本地caching。 我应该去Node Cache( https://www.npmjs.com/package/node-cache )还是Redis?

哪个会更快更高效?

如果您计划在将来扩展应用程序,请selectredis

如果这只是一个需要良好性能的小型项目,那么可以使用内存。

作为一个初学者,我推荐使用内存中的caching,但是使用控制机制的反转机制,可以在使用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, } } 

然后,您只需使用所需的提供程序,然后即可轻松重构代码,而无需更改应用程序中的所有文件。

它取决于要caching的对象大小,可以单独使用redis,也可以单独使用本地caching,或者两者兼而有之。 Redis会给你很多优点,比如集中式caching,因此有更高的caching命中率 (一个Web服务器设置caching,所有其他Web服务器都可以使用这个值),而在caching中caching设置为每个服务器,因此有一个较低的caching命中率。 本地caching的性能优势是避免了networking调用 ,如果你的对象不是很大,这是一个微不足道的开销,如果你在Web服务器或专用的单独服务器上本地托pipe它,redis会在这两种情况下给你带来好的性能。 如果你的对象很大,说几MB,那么networking跳是不可取的,你应该从数据库或rediscaching中获取对象,并在本地caching它。