假设我在 Redis 存储中有一些 key 。我想在新的 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 种方法可以实现这一目标:
客户端逻辑:您可以在应用程序中管理哈希字段逐出逻辑。这将需要在哈希值中存储附加(元)数据(即在值中分隔/构造元数据和实际数据),在哈希级别(您可以使用“特殊”字段名称,例如“_eviction_heap_”),和/或者使用其他数据结构(看起来每个哈希的排序集会很有用)。
服务器端Lua:为了优化上述,可以将逻辑封装在Lua中,然后用
EVAL
来执行。命令。Redis 模块:这是高级内容,但如果您能做到这一点,您几乎可以做任何事情 - 包括实现一个新的具有大小限制的 HashMap 以及LRU 逐出功能”数据结构。
关于java - Redis:具有大小限制和 LRU 驱逐功能的 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47486596/