Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 删除Redis散列键';LRU上的s场_Hash_Redis_Lru - Fatal编程技术网

Hash 删除Redis散列键';LRU上的s场

Hash 删除Redis散列键';LRU上的s场,hash,redis,lru,Hash,Redis,Lru,我如何在Redis上设置LRU,Redis不是在实例级别,而是在某些特定级别。 让我们说一个杂烩。 我使用散列键作为一个缓存桶,字段作为键,值就是值。 所以它就像: Redis;s key field value=为我键入key field 如果不是直接的,那么我想使用另一个DB级LRU。 (一个Redis实例有16个DB,我想使用DB 1作为LRU,这意味着DB 1中的所有内容都将遵循LRU,而DB-2,3中的所有内容都不会遵循LRU)。我使用哈希+排序集实现了它 在我看来,与Redis规范等

我如何在Redis上设置LRU,Redis不是在实例级别,而是在某些特定级别。 让我们说一个杂烩。 我使用散列键作为一个缓存桶,字段作为键,值就是值。 所以它就像: Redis;s key field value=为我键入key field

如果不是直接的,那么我想使用另一个DB级LRU。
(一个Redis实例有16个DB,我想使用DB 1作为LRU,这意味着DB 1中的所有内容都将遵循LRU,而DB-2,3中的所有内容都不会遵循LRU)。

我使用哈希+排序集实现了它

在我看来,与Redis规范等效的是:

散列 键,字段,值=类型,键,值

排序集: 键,分数,值=类型,lru\U计数器,键

(采用最小范围(如果要删除5个元素,则zrange(type,0,4)),这将提供最近使用最少的5个键)

散列将存储实际缓存。 排序后的集合将只存储带有分数的键(作为成员)。redis散列中的每个put和get(在任何键上)都将递增lru_计数器(一个整数变量),并使用相同的键(type、lru_计数器、key)和lru_计数器分数将条目放入排序集中

因此,对于同一个键,最近的put/get将在排序集中具有最高的分数(lru_计数器)值

当涉及到删除时,我会取出得分最低的成员(zrange,它是散列的键),并从排序集和散列中删除