`
hellohank
  • 浏览: 146002 次
  • 性别: 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的过期事件带来了额外的复杂性,因为单个节点的过期事件并不能代表整个集群中的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有两种方式:静态注册和动态...

    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...

    vb Hook 监听 捕捉键盘,鼠标事件

    在VB(Visual Basic)编程环境中,我们经常需要对用户的键盘和鼠标操作进行监听或捕捉,以便实现特定的功能,如日志记录、游戏控制或者安全监控等。标题中的"vb Hook 监听 捕捉键盘,鼠标事件"指的是通过钩子(Hook...

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

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

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

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

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

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

    Android 监听百度地图缩放事件

    通过以上步骤,我们实现了在Android应用中监听百度地图缩放事件的功能。这对于实时更新地图上的标记位置或者其他地图相关的交互操作非常有用。在实际开发过程中,可以根据具体需求调整监听器中的逻辑处理,以满足...

Global site tag (gtag.js) - Google Analytics