2017-07-18 161 views
3

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

我们使用旋转地图存储键和值对,例子是如下,

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

我想为我插入每个键指定TTL,我知道我能做到这一点使用RMap.expire()。我没有得到的是,当特定的密钥过期时,我怎么能听到。由于每个密钥都将具有不同的TTL,并且如Redis文档中所述,它会处理密钥的自动过期并生成事件。

我的问题是,

  1. 我怎样才能捕捉生成EXPIRE事件,也得到其关键就得到了在Redisson java库生成的?

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

回答

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); 
+0

我有2个疑点进一步1.从哪里可以下载最新版本。 2.正在使用监听器更好的方法,因为在Redis上他们提到,实际过期事件和通知可能会有重大延迟? –

+1

@RahulBorkar回答您的问题:1.这里是[快速入门](https://github.com/redisson/redisson#quick-start)指南。 2.它使用Redis中不提供的自有失效方法。是的,在实际到期时间和火灾事件之间可能会出现延迟。 –

+0

感谢您的详细回复。你有没有关于你提到的延误的表现评估? –