java - Redisson 捕获 key 过期事件

标签 java redis redisson

我在我的大数据应用程序中使用 Redis 作为缓存服务。 Redis 的主要目的是验证我们从每个请求中收到的 key 。

我们使用RMap来存储键值对,示例如下,

key = 1212sads23sads341212saas23asds45
value = Regular java object with some complex data.

我想为我插入的每个键分配 TTL,我知道我可以使用 RMap.expire() 来做到这一点。我没有得到的是,当特定 key 过期时我该如何收听。由于每个 key 都将具有不同的 TTL,并且如 Redis 文档中所述,它负责 key 的自动过期并生成事件。

我的问题是,

  1. 如何捕获生成的 EXPIRE 事件并获取它在 Redisson java 库中生成的 key ?

  2. 这是更好的方法(redis 内置自动过期),还是运行一些检查过期 key 的线程更好?

最佳答案

从 3.4.3 版本开始 Redisson提供为 map 条目到期注册监听器的能力。

这是使用示例:

RMapCache<String, String> mapCache = redisson.getMapCache("myMap");
int expireListener = map.addListener(new EntryExpiredListener<String, String>() {
    @Override
    public void onExpired(EntryEvent<String, String> event) {
      event.getKey(); // expired key
      event.getValue() // expired value
      // ...
    }
});

map.put("key", "value", 10, TimeUnit.SECONDS);

关于java - Redisson 捕获 key 过期事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45161385/

相关文章:

java - Eclipse 中的 Web 应用程序库为空 - 找不到 "jars"

node.js - 大多数特定 URI 的类似键值的存储

docker - 无法使用 Redis 连接到单独的 docker 容器

java - 整数与长索引的性能循环

java - 非空属性引用 Hibernate 的 transient 值

java - JAXB 注释 - 如何使 XmlIDRef 元素列表具有 id 值作为属性而不是元素正文?

java - 由于 "Invalid tag"错误,无法构造 java 对象

redis - Redis Sorted Set ZSCAN项目顺序

Redisson 将 ArrayList 或 RList 放入 RMap 中。会发生什么?

java - 如何使用java获取redis db中的哈希列表?