【问题标题】:Redisson Capturing Key Expire EventRedisson 捕获密钥过期事件
【发布时间】:2017-12-23 00:04:31
【问题描述】:

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

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

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

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

我的问题是,

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

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

【问题讨论】:

    标签: java redis redisson


    【解决方案1】:

    从 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);
    

    【讨论】:

    • 我还有2个疑问,1.从哪里可以下载最新版本。 2. 使用监听器是不是更好的方法,因为在 Redis 上,他们提到,实际过期事件和通知可能会有明显的延迟??
    • @RahulBorkar 回答您的问题: 1. 这是quick start 指南。 2.它使用了Redis中没有的自己的过期方法。是的,实际到期时间和火灾事件时刻之间可能会发生一些延迟。
    • 感谢您的详细回复。对于您提到的延迟,您有任何绩效衡量标准吗?
    • @RahulBorkar 恐怕没有
    • @zwebie 当然,使用RObject.addListener 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2011-05-22
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多