如何在Redis上设置LRU,这不是在实例级别上,而是在某些特定级别上。 让我们说一个哈希。 我使用hash-key作为一个缓存桶,字段作为键,值是值。 所以它就像: Redis;对我来说是key-field-value = type-key-field。
如果不是直截了当,那么我想使用另一个DB Level LRU。 (一个Redis实例有16个DB,我想使用DB 1作为LRU这意味着DB 1中的所有内容都将遵循LRU,而DB-2,3中的内容将不会跟随LRU)。
答案 0 :(得分:0)
我用Hash + Sorted Set实现了它。
在我的情况下,等同于Redis规范:
哈希 键,字段,值=类型,键,值
排序套装: key,score,value = type,lru_counter,key
(取最低范围(如果你想删除5个元素,zrange(类型,0,4)),这将给你最近最少使用的5个键)
哈希将存储实际缓存。 排序集将存储Just键(作为成员)和分数。每次put和get in redis散列(在任何键上),都会增加lru_counter(一个整数变量),并将条目放入带有相同键(type,lru_counter,key)和lru_counter得分的有序集中。
因此,最近的put / get将在同一键的Sorted Set中获得最高分(lru_counter)值。
当谈到删除时,我拿出得分最低的成员(zrange,这是Hash的关键)并从Sorted Set和Hash中删除。