redis 超时失效key 的监听触发

1. 事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发,故需要订

阅 __keyevent@0__:expired 通道

0表示db0 根据自己的dbindex选择合适的数字

 

2. 修改 redis.conf 文件 

修改 notify-keyspace-events Ex 

# K    键空间通知,以__keyspace@<db>__为前缀
# E    键事件通知,以__keysevent@<db>__为前缀
# g    del , expipre , rename 等类型无关的通用命令的通知, ...
# $    String命令
# l    List命令
# s    Set命令
# h    Hash命令
# z    有序集合命令
# x    过期事件(每次key过期时生成)
# e    驱逐事件(当key在内存满了被清除时生成)
# A    g$lshzxe的别名,因此”AKE”意味着所有的事件

3. 重启redis , 即可测试失效事件的触发, 监听获取的值为 key

 

<java>

1.  首先需要一个消息监听器类

package com.sogou.baike.testimport.testSubscribe;  import redis.clients.jedis.JedisPubSub;  /**  * Created by denglinjie on 2016/6/29.  */  
public class RedisMsgPubSubListener extends JedisPubSub {  @Override  public void unsubscribe() {  super.unsubscribe();  }  @Override  public void unsubscribe(String... channels) {  super.unsubscribe(channels);  }  @Override  public void subscribe(String... channels) {  super.subscribe(channels);  }  @Override  public void psubscribe(String... patterns) {  super.psubscribe(patterns);  }  @Override  public void punsubscribe() {  super.punsubscribe();  }  @Override  public void punsubscribe(String... patterns) {  super.punsubscribe(patterns);  }  @Override  public void onMessage(String channel, String message) {  System.out.println("channel:" + channel + "receives message :" + message);  this.unsubscribe();  }  @Override  public void onPMessage(String pattern, String channel, String message) {  }  @Override  public void onSubscribe(String channel, int subscribedChannels) {  System.out.println("channel:" + channel + "is been subscribed:" + subscribedChannels);  }  @Override  public void onPUnsubscribe(String pattern, int subscribedChannels) {  }  @Override  public void onPSubscribe(String pattern, int subscribedChannels) {  }  @Override  public void onUnsubscribe(String channel, int subscribedChannels) {  System.out.println("channel:" + channel + "is been unsubscribed:" + subscribedChannels);  }  
}  

该类需要继承JedisPubSub ,并实现其抽象方法,通过方法的名称很清楚的看出来,这个监听器是用来订阅一个频道,在订阅该频道,取消订阅,收到消息等状态会对应调用相关的方法

 

 

2.  订阅测试

public class TestSubscribe {  @Test  public void testSubscribe() throws Exception{  Jedis jedis = new Jedis("localhost");  RedisMsgPubSubListener listener = new RedisMsgPubSubListener();  jedis.subscribe(listener, "__keyevent@0__:expired");  //other code  
    }  
}  

该类实现对频道redisChatTest的订阅监听,频道的订阅,取消订阅,收到消息都会调用listener对象的对应方法

 

注意:subscribe是一个阻塞的方法,在取消订阅该频道前,会一直阻塞在这,只有当取消了订阅才会执行下面的other code,参考上面代码,我在onMessage里面收到消息后,调用了this.unsubscribe(); 来取消订阅,这样才会执行后面的other code

 

3.  发布消息测试

Public class TestPublish {  @Test  public void testPublish() throws Exception{  Jedis jedis = new Jedis("localhost");  jedis.publish("redisChatTest", "我是天才");  Thread.sleep(5000);  jedis.publish("redisChatTest", "我牛逼");  Thread.sleep(5000);  jedis.publish("redisChatTest", "哈哈");  }  
}  

这个类向频道redisChatTest发布消息,第二步因为订阅了该频道,所以会收到该消息。

转载于:https://www.cnblogs.com/chen-lhx/p/6626371.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英语四级真题作文 计算机,2019年6月大学英语四级作文范文50例:电脑

新东方在线英语四级频道为备考英语四级的同学们整理了英语四级作文范文&#xff0c;希望可以为大家带来帮助&#xff0c;一起来学习一下吧。Computers in Students’ Flats1. 现在大学生宿舍几乎人手一台电脑2. 有些人认为会促进学生的学习&#xff0c;有些人认为会影响学生的学…

图数据库neo4j安装、neo4j使用

安装 yum install java-1.8.0-openjdk tar -xf neo4j-community-3.5.2-unix.tar.gz ./bin/neo4j start 外部访问需修改 vi conf/neo4j.conf 如下这行去掉注释 dbms.connectors.default_listen_address0.0.0.0 需要开放端口 7474 7687 浏览器访问url http://192.168.91.…

关于计算机网络的未来综述,计算机网络综述

摘要&#xff1a; 从计算机网络软件硬件进行阐述&#xff0c;使人们对计算机网络的构造以及设备有一个整体了解&#xff0c;以使在以后的工作和学习中&#xff0c;面对网络问题不再束手无策&#xff0c;从而提高工作和学习的效率。关键词&#xff1a; 计算机网络&#xff1b;网…

spring cloud gateway集成hystrix全局断路器

pom.xml添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> 在配置文件中&#xff0c;增加spring.cloud.gateway.default-filters&…

java 抽象方法

int 是基本数据类型Integer是其包装类&#xff0c;注意是一个类。为什么要提供包装类呢&#xff1f;&#xff1f;&#xff1f;一是为了在各种类型间转化&#xff0c;通过各种方法的调用。否则 你无法直接通过变量转化。比如&#xff0c;现在int要转为Stringint a0;String resul…

html用变量存储颜色信息,我如何使用间隔循环修改HTML Canvas颜色?

hue变量和hsl样式中的百分比控制颜色。要从RGB颜色150,150,200开始&#xff0c;将色调设置为240&#xff0c;将饱和度(hsl中的第二个参数)设置为25%&#xff0c;将亮度(第三个参数)设置为78%。要以RGB颜色190,160,200结束&#xff0c;您需要循环&#xff0c;直到色相值达到285为…

spring cloud gateway跨域全局CORS配置

在Spring 5 Webflux中&#xff0c;配置CORS&#xff0c;可以通过自定义WebFilter实现&#xff1a; 注&#xff1a;此种写法需真实跨域访问&#xff0c;监控header中才会带相应属性。 代码实现方式 import org.springframework.http.HttpHeaders; import org.springframework…

1前端学习(2345):关于前端对于xml格式文件的渲染

一、xml和json对比 xml:扩展标记语言&#xff0c;     优点&#xff1a;格式统一&#xff0c;格式标准&#xff0c;容易与其他系统远程交互&#xff0c;数据共享比较方便     缺点&#xff1a;xml文件庞大&#xff0c;格式复杂&#xff0c;解析会花费大量时间和资源&am…

CDH集群异常处理ERROR  Failure due to stall on seeded torrent.、重装时hdfs提示目录已存在、CDH重启不正常

//集群安装报错 ERROR Failure due to stall on seeded torrent. 解决&#xff1a;重启agent服务 //重装时hdfs提示目录已存在 rm -rf /dfs rm -rf /impala/ ///CDH重启不正常 先启动cloudera-scm-server&#xff0c;等能进入web管理页面后/cloudera-scm-server statu…

java - 百钱百鸡小算法

传送门: 袁咩咩的小小博客 百钱百鸡是一个非常经典的不定方程问题&#xff0c;最早源于我国古代的《算经》&#xff0c;这是古代著名数学家张丘建首次提出的。百钱百鸡问题原文如下&#xff1a; 鸡翁一&#xff0c;值钱五&#xff0c;鸡母一&#xff0c;值钱三&#xff0c;鸡雏…

计算机网络管理员demo,计算机网络试题demo

计算机网络试题demo 1 北京交通大学 2006-2007 学年 第二学期考试试题 课程名称&#xff1a;计算机通信与网络技术 班级&#xff1a;电气 05 出题人&#xff1a;网络课程组 题 号 一 二 三 四 五 总分 得 分 签 字 一&#xff0e; 选择题(每题1 分&#xff0c;共20 分) 1&#…

C 语言中可以调用命令行指令的 system()函数

C语言有一个system函数&#xff08;在<stdlib.h>头中&#xff0c;C则为<cstdlib>头&#xff09;&#xff0c;可以用来调用终端命令。原型如下&#xff1a; int system(const char *cmdline /* 命令字符串 */); system函数调用/bin/sh 执行特定的shell命令&#xf…

文本怎么换成html,编辑html格式文本可改成txt格式(可以替换或更换某文本)新手...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼新的名字生活助手If Clock.Hour < 12 ThenTextWindow.WriteLine("早上好&#xff0c;测试者")ElseIf Clock.Hour < 14 ThenTextWindow.WriteLine("中午好&#xff0c;测试者")ElseIf Clock.Hour < 17…

impala sql清单

创建数据库 CREATE DATABASE IF NOT EXISTS database_name; 查看所有数据库 show databases 删除数据库 DROP DATABASE IF EXISTS sample_database; 进入数据库 use dbname 创建表 CREATE TABLE IF NOT EXISTS test.student (name STRING, age INT, contact INT ); 查…

考研计算机网课辅导,考研计算机网课辅导哪个好

考研计算机网课辅导哪个好&#xff1f;面对市面上如此之多的考研辅导&#xff0c;怎么选择成了很多学员的难题。现在的在线教育水平很高了&#xff0c;特别是在考研辅导上&#xff0c;学习自由&#xff0c;配套服务全面。找培训还是要看老师&#xff0c;比较牛叉的注会老师如张…

什么是流程控制

浅析PHP流程控制 今天Qi号给小白们分享一下PHP基础(相互请教&#xff5e;&#xff5e;)&#xff1a; 下面是Qi号搜集的资料及自己的总结希望有所帮助&#xff1a; 什么是流程控制&#xff1a;在声明式的编程语言中&#xff0c;流程控制指令是指会改变程序运行顺序的指令&#x…

连接hadoop java.io.IOException:Could not locate executable null\bin\winutils.exe in the Hadoop binarie

java连接hadoop报错 java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 原因查找 找到报错位置hadoop包中的xxx/Shell.java public static final String getQualifiedBinPath(String executable) throws IOException {// co…