一个由Redis支持的LRU缓存 – redis-lru

redis lru cache

一个LRU缓存,有Redis支持,让数据可以通过多种Node.JS进程分享。

var redis = require('redis').createClient(port, host, opts);
var lru = require('redis-lru');

var personCache = lru(5); // up to 5 items

personCache.set('john', {name: 'John Doe', age: 27})
  .then(() => personCache.set('jane', {name: 'Jane Doe', age: 30}))
  .then(() => personCache.get('john'))
  .then(console.log) // prints {name: 'John Doe', age: 27}
  .then(() => personCache.reset()) //clear the cache

var bandCache = lru({max: 2, namespace: 'bands', maxAge: 15000}); // use a different namespace and set expiration

bandCache.set('beatles', 'john, paul, george, ringo')
  .then(() => bandCache.set('zeppelin', 'jimmy, robert, john, bonzo'))
  .then(() => bandCache.get('beatles')) // now beatles are the most recently accessed
  .then(console.log) // 'john, paul, george, ringo'
  .then(() => bandCache.set('floyd', 'david, roger, syd, richard, nick')) // cache full, remove least recently accessed
  .then(() => bandCache.get('zeppelin'))
  .then(console.log) // null, was evicted from cache

安装

npm install redis-lru

选项

max:缓存能够保持的Item的最大数量。这个选项是必须的,如果没有其他需要的选项,它可以在创建缓存时直接作为第二参数传递。

namespace:所有键添加的前缀保存在Redis中,为了避免与其他应用冲突并允许多种缓存实例。

maxAge:最大数量的毫秒键将会保持在缓存中,之后getting/peeking将会解决null。注意这个值将会在maxAge之后从Redis中移除,但是键将会在缓存中存在,一直到下一次访问为止。

score:自定义分数功能,用于在缓存中排列元素。默认we () => new Date().getTime()

increment:如果为true,每一次访问score函数的结果都会添加到前一个中,而不是替代前一个。

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:一个由Redis支持的LRU缓存 – redis-lru