使用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); }
相关推荐
- **订阅方式**:通过订阅特定的通道(如`__keyspace@0__:*`来监听所有数据库的键变化,或`__keyevent@0__:expired`来监听键过期事件)。 - **应用示例**:可用于实时监控、日志记录、缓存更新、数据同步等。 3. ...
在上述代码中,`setExpireKey`方法用于设置Key的值和过期时间,`handleKeyExpirationEvent`方法监听Key过期事件并执行相应的业务处理。需要注意的是,Spring Data Redis默认并不直接支持Key过期事件的监听,而是通过...
在使用redis集群时,发现过期key始终监听不到。网上也没有现成的解决方案。于是想,既然不能监听集群,那我可以建立多个redis连接,分别对每个redis的key过期进行监听。以上做法可能不尽人意,目前也没找到好的解决...
实现redis的key值过期监听事件,且集成jedis实现redis的简单调用,内有功能备注
本文实例讲述了Android开发实现Fragment监听返回键事件功能的方法。分享给大家供大家参考,具体如下: 前面的文章Android开发教程之Fragment定义、创建与使用方法详细讲述了Fragment的基本概念与用法。这里再来分析...
为了捕捉这一行为并根据需要做出响应,开发者通常会使用JavaScript或jQuery来监听滚轮事件。本篇将详细介绍如何使用jQuery和原生JavaScript实现鼠标滚轮事件的监听。 一、jQuery监听鼠标滚轮事件 jQuery库提供了一...
SpringBoot+Redis过期事件监听实现过程解析 本文主要介绍了SpringBoot+Redis过期事件监听实现过程的详细解析,旨在帮助读者更好地理解和掌握相关技术。通过示例代码的详细介绍,对大家的学习或者工作具有一定的参考...
在`eventFilter()`方法中,你可以根据实际需求处理按键事件,例如记录按键组合、触发特定功能或者修改默认行为。 在博客参考地址(https://blog.csdn.net/qq_37529913)中,作者可能详细介绍了如何将上述代码整合到...
Spring Boot+Redis 监听过期 Key 的操作方法 本文主要介绍了使用 Spring Boot 和 Redis 监听过期 Key 的操作方法,这种方法在订单业务中非常有用,可以用来设置订单的有效期限,到了有效期限后如果还未支付,就需要...
其中,监听键盘事件是常见的用户交互处理之一。本文将深入探讨如何使用jQuery来监听键盘事件,以及相关的应用场景和技巧。 ### 1. jQuery键盘事件绑定 jQuery提供了`.on()`方法来绑定事件,包括键盘事件。键盘事件...
本文将深入探讨如何使用BroadcastReceiver监听按键事件和屏幕状态的变化,包括熄屏与亮屏。 首先,我们需要了解BroadcastReceiver的基本用法。在Android中,创建一个BroadcastReceiver有两种方式:静态注册和动态...
SpringBoot监听RedisKey失效事件实现定时任务
本教程将深入讲解如何使用Visual Studio (VS) 和 MFC 创建一个后台键盘事件监听器,该监听器通过HOOK技术捕获并记录键盘输入。 首先,我们要理解什么是HOOK。在Windows编程中,HOOK是一种机制,允许我们插入代码到...
### JS键盘监听事件addkey无eval版 #### 知识点概述 本篇文章将深入探讨一个自定义的JavaScript键盘监听事件处理函数`addkey`,该函数采用了一种不使用`eval`的安全方法来实现对键盘按键的监听。在Web开发中,监听...
android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo
4. **滚动事件的应用场景**:滚动事件监听在许多场合都有应用,比如实现无限滚动加载(Pull-to-Refresh或Load-more)效果,监听滑动到底部自动加载更多数据;或者是实现自定义的滑动导航栏,当ScrollView向上滚动时...
这为开发者提供了深入用户界面交互的能力,例如辅助功能应用或者一些需要监听系统事件的特殊场景。本教程将详细讲解如何通过 AccessibilityService 实现系统按键监听功能。 首先,我们需要在AndroidManifest.xml...
在IT领域,尤其是在Windows应用程序开发中,有时我们需要捕获系统级别的事件,比如全局...通过学习和理解这个技术,开发者可以构建出更复杂、功能更全面的应用,例如输入记录器、辅助工具,甚至是游戏作弊检测软件等。
查阅JavaDoc API文档 读者可根据JavaDoc API文档来了解如何实现单击item选项监听事件 如下列出的setItems 方法第2个参数易知只要为第2个参数提供OnClickListener实例即可实现监听事件 读者可通过这种方式触类旁通...
【Examples】目录中可能包含了一些示例代码,演示如何使用这个库来实现具体的全局事件监听功能。这些例子可以帮助开发者快速理解和应用这个库,例如,可以创建一个简单的日志记录器,记录所有全局的鼠标和键盘活动,...