redis过期通知

本文介绍了如何启用Redis的键过期通知功能,通过设置`notify-keyspace-events`为`Ex`来订阅特定数据库的过期键事件。推荐将过期键事件隔离到一个单独的数据库来处理。在Spring中,可以通过两种方式配置监听器来订阅`__keyevent@<db>__:expired`主题,从而在键过期时接收到通知并进行相应处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先启用
登陆redis-cli,输入命令: config set notify-keyspace-events Ex

订阅的key  __keyevent@<db>__:expired  这个格式是固定的,db代表的是数据库的编号,由于订阅开启之后这个库的所有key过期时间都会被推送过来,所以最好单独使用一个数据库来进行隔离。可以使用redis来处理定时任务一种思路。

1.启用redis通知功能,并订阅过期的key,等待接收过期的key相关数据



2.设置键值对及过期时间


3.步骤2设置5秒过期时间后,步骤1窗口接收到过期的key test



spring中订阅redis键值过期消息通知


<!-- 设置redis消息订阅(方式1) -->
<!--<bean id="listener" class=" com.xlhy.new_agent.controller.DefaultMessageDelegate " />
<redis:listener-container connection-factory="jedisConnFactory">
<redis:listener ref="listener" method="handleMessage" topic="__keyevent@1__:expired" />
</redis:listener-container>-->
<!-- 设置redis消息订阅(方式2) -->
< bean id ="messageListener"
class ="org.springframework.data.redis.listener.adapter.MessageListenerAdapter" >
< constructor-arg >
< bean class ="com.xlhy.new_agent.controller.DefaultMessageDelegate" />
</ constructor-arg >
</ bean >
< bean id ="redisContainer" class ="org.springframework.data.redis.listener.RedisMessageListenerContainer" >
< property name ="connectionFactory" ref ="jedisConnectionFactory" />
< property name ="messageListeners" >
< map >
< entry key-ref ="messageListener" >
< list >
< bean class ="org.springframework.data.redis.listener.ChannelTopic" >
< constructor-arg value ="__keyevent@0__:expired" />
</ bean >
</ list >
</ entry >
</ map >
</ property >
</ bean >

//订阅过期key,监听过期key
public class DefaultMessageDelegate {
public static Logger logger = LogManager. getLogger (DefaultMessageDelegate. class .getName());
public void handleMessage(String message) {
logger .info( "key过期了:" + message);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值