java-Redisson捕获密钥过期事件

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

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

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

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

我的问题是

>如何捕获已生成的EXPIRE事件,以及如何获取它在Redisson Java库中生成的密钥?
>这是更好的方法(redis内置自动过期),还是运行一些检查过期密钥的线程更好?

解决方法:

从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);
上一篇:Redis中是如何实现分布式锁的?


下一篇:从Java连接到AWS Elasticache(Redis集群)的正确方法是什么?