Redis:具有大小限制和 LRU 驱逐功能的 hashmap

Redis: hashmap with size limit and LRU eviction functionality

假设我在 redis 存储中有一些密钥。我想在一个新的 hashmap 结构中保留一些键值对。我还想限制这个 hashmap 的大小,并在其大小(hashmap)增长超过限制时驱逐 hashmap 的最近最少使用的键值对,并且不触及已存在的 redis 数据结构的其余部分。 redis 是否为我提供了任何这样的功能,我可以在不触及其余存储键的情况下执行这种 LRU 风格的 hashmap 条目驱逐?或者可以在 redis 以任何方式提供的内容之上构建它吗?感谢您的帮助!

Does redis provide me with any such functionality where I can do this LRU style eviction of hashmap entries not touching rest of the stored keys?

不,不是。

Or can one build it on top of what redis provides in any way?

可以,一个。

有 3 种方法可以解决:

  1. 客户端逻辑:您可以在您的应用程序中管理哈希的字段逐出逻辑。这将需要在哈希值中存储额外的(元)数据(即 delimit/structure 值中的元数据和真实数据),在哈希级别(您可以使用 "special" 字段名称,如“_eviction_heap_"), and/or 带有额外的数据结构(看起来每个哈希的排序集会很有用)。

  2. Server-side Lua:为了优化上面的内容,可以把逻辑封装在Lua里面执行EVAL命令。

  3. Redis 模块: 这是高级的东西,但如果你能做到,你几乎可以做任何事情 - 包括实现一个新的 "hashmap with size limit and LRU eviction functionality"数据结构.