`
hellohank
  • 浏览: 146380 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

记录一下redisson监听key过期事件功能

阅读更多

使用redisson监听key过期,需要两步操作:

1、开启redis服务端的事件广播功能。

如果是自建的,则直接在redis.conf中增加或修改(修改后重启redis):

notify-keyspace-events "KEx"

    具体可选的选项如下(所以,上面的KEx可以看下面的含义):

    

 K     Keyspace events, published with __keyspace@<db>__ prefix.
 E     Keyevent events, published with __keyevent@<db>__ prefix.
 g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
 $     String commands
 l     List commands
 s     Set commands
 h     Hash commands
 z     Sorted set commands
 x     Expired events (events generated every time a key expires)
 e     Evicted events (events generated when a key is evicted for maxmemory)
 A     Alias for g$lshzxe, so that the "AKE" string means all the events.

 

如果是阿里云redis,则可以到阿里redis的管理界面操作。

 

2、项目中添加监听事件(监听redis事件的行为,各个组件,如jedis等都有自己的方式,自己百度,这里是记录redisson的方式):

public static void main(String[] args) {
        int db = 2;
        RedissonClient redissonClient = createClient(db);
        RTopic topic = redissonClient.getTopic("__keyevent@" + db + "__:expired", new StringCodec());
        topic.addListener(String.class, new MessageListener() {
            @Override
            public void onMessage(CharSequence channel, Object msg) {
                System.out.println("收取到过期的事件:" + channel + "; Thread: " + Thread.currentThread().toString());
                System.out.println("过期的key="+msg);
            }
        });
        String key = "test_expire_listen";
        Object value = "val";
        RBucket bucket = redissonClient.getBucket(key);
        bucket.set(JSON.toJSONString(value), 5, TimeUnit.SECONDS);
        bucket.expire(6,TimeUnit.SECONDS);
    }

    private static RedissonClient createClient(int db) {
        Config config = new Config();
        config.setCodec(new StringCodec());
        config.useSingleServer()
                .setAddress("redis://127.0.0.1:6379")
                .setPassword("******")
                .setConnectionPoolSize(500)
                .setIdleConnectionTimeout(10000)
                .setTimeout(3000)
                .setConnectTimeout(30000)
                .setRetryAttempts(3)
                .setRetryInterval(1000)
                .setDnsMonitoringInterval(-1)
                .setPingConnectionInterval(10000)
                .setDatabase(db);
        return Redisson.create(config);
    }

 

0
1
分享到:
评论

相关推荐

    监听redis的key的变化

    - **订阅方式**:通过订阅特定的通道(如`__keyspace@0__:*`来监听所有数据库的键变化,或`__keyevent@0__:expired`来监听键过期事件)。 - **应用示例**:可用于实时监控、日志记录、缓存更新、数据同步等。 3. ...

    监听redis过期key,做对应业务处理

    在上述代码中,`setExpireKey`方法用于设置Key的值和过期时间,`handleKeyExpirationEvent`方法监听Key过期事件并执行相应的业务处理。需要注意的是,Spring Data Redis默认并不直接支持Key过期事件的监听,而是通过...

    Redis集群下过期key监听的实现代码

    在使用redis集群时,发现过期key始终监听不到。网上也没有现成的解决方案。于是想,既然不能监听集群,那我可以建立多个redis连接,分别对每个redis的key过期进行监听。以上做法可能不尽人意,目前也没找到好的解决...

    SpringBoot监听reids的key值过期

    实现redis的key值过期监听事件,且集成jedis实现redis的简单调用,内有功能备注

    Android开发实现Fragment监听返回键事件功能的方法

    本文实例讲述了Android开发实现Fragment监听返回键事件功能的方法。分享给大家供大家参考,具体如下: 前面的文章Android开发教程之Fragment定义、创建与使用方法详细讲述了Fragment的基本概念与用法。这里再来分析...

    jquery监听鼠标滚轮事件+js监听滚轮事件

    为了捕捉这一行为并根据需要做出响应,开发者通常会使用JavaScript或jQuery来监听滚轮事件。本篇将详细介绍如何使用jQuery和原生JavaScript实现鼠标滚轮事件的监听。 一、jQuery监听鼠标滚轮事件 jQuery库提供了一...

    springboot+redis过期事件监听实现过程解析

    SpringBoot+Redis过期事件监听实现过程解析 本文主要介绍了SpringBoot+Redis过期事件监听实现过程的详细解析,旨在帮助读者更好地理解和掌握相关技术。通过示例代码的详细介绍,对大家的学习或者工作具有一定的参考...

    QT 键盘监听(重写监听事件)

    在`eventFilter()`方法中,你可以根据实际需求处理按键事件,例如记录按键组合、触发特定功能或者修改默认行为。 在博客参考地址(https://blog.csdn.net/qq_37529913)中,作者可能详细介绍了如何将上述代码整合到...

    spring boot+redis 监听过期Key的操作方法

    Spring Boot+Redis 监听过期 Key 的操作方法 本文主要介绍了使用 Spring Boot 和 Redis 监听过期 Key 的操作方法,这种方法在订单业务中非常有用,可以用来设置订单的有效期限,到了有效期限后如果还未支付,就需要...

    jquery 监听 键盘 事件

    其中,监听键盘事件是常见的用户交互处理之一。本文将深入探讨如何使用jQuery来监听键盘事件,以及相关的应用场景和技巧。 ### 1. jQuery键盘事件绑定 jQuery提供了`.on()`方法来绑定事件,包括键盘事件。键盘事件...

    安卓广播监听按键事件和屏幕熄屏亮屏监听

    本文将深入探讨如何使用BroadcastReceiver监听按键事件和屏幕状态的变化,包括熄屏与亮屏。 首先,我们需要了解BroadcastReceiver的基本用法。在Android中,创建一个BroadcastReceiver有两种方式:静态注册和动态...

    SpringBoot监听RedisKey失效事件实现定时任务.zip

    SpringBoot监听RedisKey失效事件实现定时任务

    windows后台监听键盘事件(vs mfc版)

    本教程将深入讲解如何使用Visual Studio (VS) 和 MFC 创建一个后台键盘事件监听器,该监听器通过HOOK技术捕获并记录键盘输入。 首先,我们要理解什么是HOOK。在Windows编程中,HOOK是一种机制,允许我们插入代码到...

    JS键盘监听事件addkey无eval版

    ### JS键盘监听事件addkey无eval版 #### 知识点概述 本篇文章将深入探讨一个自定义的JavaScript键盘监听事件处理函数`addkey`,该函数采用了一种不使用`eval`的安全方法来实现对键盘按键的监听。在Web开发中,监听...

    android 后台监听按键事件方法及demo

    android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo

    ScrollView 的滚动事件监听

    4. **滚动事件的应用场景**:滚动事件监听在许多场合都有应用,比如实现无限滚动加载(Pull-to-Refresh或Load-more)效果,监听滑动到底部自动加载更多数据;或者是实现自定义的滑动导航栏,当ScrollView向上滚动时...

    通过AccessibilityService实现系统按键监听功能

    这为开发者提供了深入用户界面交互的能力,例如辅助功能应用或者一些需要监听系统事件的特殊场景。本教程将详细讲解如何通过 AccessibilityService 实现系统按键监听功能。 首先,我们需要在AndroidManifest.xml...

    C# Hock 全局监听程序外的键盘和鼠标的事件

    在IT领域,尤其是在Windows应用程序开发中,有时我们需要捕获系统级别的事件,比如全局...通过学习和理解这个技术,开发者可以构建出更复杂、功能更全面的应用,例如输入记录器、辅助工具,甚至是游戏作弊检测软件等。

    各种Android Dialog创建及其监听事件实现

    查阅JavaDoc API文档 读者可根据JavaDoc API文档来了解如何实现单击item选项监听事件 如下列出的setItems 方法第2个参数易知只要为第2个参数提供OnClickListener实例即可实现监听事件 读者可通过这种方式触类旁通...

    Qt全局鼠标、键盘事件监听器库

    【Examples】目录中可能包含了一些示例代码,演示如何使用这个库来实现具体的全局事件监听功能。这些例子可以帮助开发者快速理解和应用这个库,例如,可以创建一个简单的日志记录器,记录所有全局的鼠标和键盘活动,...

Global site tag (gtag.js) - Google Analytics