我将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,redisson,java 来源: https://codeday.me/bug/20191111/2017867.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。