3

NPM酷库,每天两分钟,了解一个流行NPM库。

为了优化程序性能,我们常常需要奖数据缓存起来,根据实际情况,我们可以将数据存储到磁盘、数据库、redis等。

但是有时候要缓存的数据量非常小,或者项目规模非常小,也许就是一个工具脚本,使用redis等外部数据库,还得做依赖部署。而直接将数据保存在程序变量中,最经济、快捷。但是这样就会带来一些其他问题,比如缓存更新、缓存过期等。

lru-cache

lru-cache 用于在内存中管理缓存数据,并且支持LRU算法。可以让程序不依赖任何外部数据库实现缓存管理。

  • LRU算法:尽量保留最近使用过的项
  • 可指定缓存大小
  • 可指定缓存项过期时间
const LRU = require('lru-cache');

const cache = LRU({
  max: 500,
  maxAge: 1000 * 60 * 60
});

cache.set('key','value');
cache.get('key'); // "value"

cache.reset(); // 清空

虽然,lru-cache 使用非常方便,但是lru-cache的缓存数据保存在当前进程内存内,这就决定了依赖lru-cache的项目是有状态的程序,这样就不能够分布式部署多实例负载均衡,所以如果系统设计需要多实例运行,那么还是需要使用redis。

参考资料

https://github.com/isaacs/nod...

欢迎关注公众号:梁兴臣

梁兴臣

每天了解一个NPM库,一年后成为Node.js高手


脉冲云_梁兴臣
616 声望194 粉丝

脉冲云CTO,JS全栈开发,DevOps实施,开发体验优化,开发效率提升