Redisson捕获关键过期事件

时间:2017-07-18 08:29:35

标签: java redis redisson

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

我们使用RMap存储密钥和值对,其示例如下,

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

我想为每个插入的密钥分配TTL,我知道我可以使用RMap.expire()来完成。我没有得到的是,我怎样才能听到特定键到期时的声音。由于每个密钥都有不同的TTL,并且如Redis文档中所述,它会处理密钥的自动过期并生成事件。

我的问题是,

  1. 如何捕获生成的EXPIRE事件并获取Redisson Java库中生成的密钥?

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

1 个答案:

答案 0 :(得分:3)

由于2.9.3和3.4.3版本Redisson提供了为地图条目到期注册侦听器的功能。

以下是用法示例:

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

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