如何在Redis上设置LRU,它不是在实例级别上,而是在一些特定的级别上。让我们来看一个哈希表。我使用hash-key作为缓存桶,使用field作为key,value作为value。所以对我来说就像:Redis;的key-field-value = type-key-field。
如果它不是直接的,那么我想使用另一个DB级LRU。(一个Redis实例有16个DB,我想使用DB 1作为LRU,这意味着DB 1中的所有内容都将遵循LRU,而DB-2中的内容将遵循LRU。不会跟随LRU )。
发布于 2018-03-03 14:28:21
我用Hash +排序集实现了它。
在我的例子中,相当于Redis规范的是:
散列键、字段、值=类型、键、值
排序集: key,score,value =类型,lru_counter,key
(取最小的范围(如果你想删除5个元素,zrange(type,0,4) ),这将给你最近最少使用的5个键)
哈希将存储实际的缓存。排序集将只存储带有分数的关键字(作为成员)。redis散列中的每个put和get (在任何键上)都将递增lru_counter (一个整数变量),并将条目放入具有相同键(类型、lru_counter、键)和lru_counter分数的排序集中。
因此,最近的put/get将在同一关键字的排序集中具有最高得分( lru_counter )值。
当涉及到删除时,我删除得分最低的成员( zrange,这是Hash的关键字),并从排序集和Hash中删除。
https://stackoverflow.com/questions/49044527
复制相似问题