redis过期通知

首先启用
登陆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);
}
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

老_莫

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值