Redisson 捕获密钥过期事件
Redisson Capturing Key Expire Event
我在我的大数据应用程序中使用 Redis 作为缓存服务。 Redis 的主要目的是验证我们从每个请求中收到的密钥。
我们使用RMap来存储键值对,示例如下,
key = 1212sads23sads341212saas23asds45
value = Regular java object with some complex data.
我想为我插入的每个键分配 TTL,我知道我可以使用 RMap.expire()
来做到这一点。我没有得到的是,当特定密钥过期时我该如何收听。由于每个密钥都将具有不同的 TTL,并且如 Redis 文档中所述,它负责密钥的自动过期并生成事件。
我的问题是,
如何捕获生成的 EXPIRE 事件并获取它在 Redisson java 库中生成的密钥?
这是更好的方法(redis 内置自动过期),还是运行 一些检查过期键的线程更好?
自 3.4.3 版本 Redisson 提供了为地图条目过期注册侦听器的能力。
这是用法示例:
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);
我在我的大数据应用程序中使用 Redis 作为缓存服务。 Redis 的主要目的是验证我们从每个请求中收到的密钥。
我们使用RMap来存储键值对,示例如下,
key = 1212sads23sads341212saas23asds45
value = Regular java object with some complex data.
我想为我插入的每个键分配 TTL,我知道我可以使用 RMap.expire()
来做到这一点。我没有得到的是,当特定密钥过期时我该如何收听。由于每个密钥都将具有不同的 TTL,并且如 Redis 文档中所述,它负责密钥的自动过期并生成事件。
我的问题是,
如何捕获生成的 EXPIRE 事件并获取它在 Redisson java 库中生成的密钥?
这是更好的方法(redis 内置自动过期),还是运行 一些检查过期键的线程更好?
自 3.4.3 版本 Redisson 提供了为地图条目过期注册侦听器的能力。
这是用法示例:
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);