java - Redis:具有大小限制和 LRU 驱逐功能的 HashMap

标签 java database caching redis lru

假设我在 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 种方法可以实现这一目标:

  1. 客户端逻辑:您可以在应用程序中管理哈希字段逐出逻辑。这将需要在哈希值中存储附加(元)数据(即在值中分隔/构造元数据和实际数据),在哈希级别(您可以使用“特殊”字段名称,例如“_eviction_heap_”),和/或者使用其他数据结构(看起来每个哈希的排序集会很有用)。

  2. 服务器端Lua:为了优化上述,可以将逻辑封装在Lua中,然后用 EVAL 来执行。命令。

  3. Redis 模块:这是高级内容,但如果您能做到这一点,您几乎可以做任何事情 - 包括实现一个新的具有大小限制的 HashMap 以及LRU 逐出功能”数据结构。

关于java - Redis:具有大小限制和 LRU 驱逐功能的 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47486596/

相关文章:

java - 新端点在测试中导致 IllegalStateException : Invalid mime type "headers": does not contain '/'

java - Cassandra - JVM OOM 直接缓冲区错误

mysql - 这些行运行时如何将时刻保存为时间戳?

caching - 如何在 Meteor 中缓存数据?

caching - 如何在 GitLab CI 中有一个 "cache per package.json"文件?

html - Chrome 中的 CSS 缓存问题

java - 在 Spring Boot 中注册 BeanFactory

PHP 标准值为 NULL 并且不会更新

SQL数据类型问题

java - 检测用户是否已接受签名的 Java Applet。