Redis开启键空间通知实现超时通知的步骤详解

Redis部分设置

修改配置文件redis.conf(Windows为redis.windows.conf)

  • 打开该配置文件(位置取决于自己的安装位置),找到Event notification部分。
  • 将notify-keyspace-events Ex的注释打开或者添加该配置,其中E代表Keyevent,此种通知会返回key的名字,x代表超时事件。
  • 如果notify-keyspace-events ""配置没有被注释的话要注释掉,否则不会生效。
  • 保存后重启redis,一定要使用当前配置文件重启,例如src/redis-server redis.conf

SpringBoot部分设置

添加redis依赖

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

在全局配置文件application中添加redis配置

spring.redis.host = 39.105.145.179
spring.redis.port=6379
spring.redis.database=0
spring.redis.listen-pattern = __keyevent@0__:expired

listen-pattern填写超时时间,意思为springboot将监听redis发出的超时键空间通知。

创建listener

public class TopicMessageListener implements MessageListener {
 @Override
 public void onMessage(Message message, byte[] bytes) {
 byte[] body = message.getBody();
 byte[] channel = message.getChannel();
 System.out.println(new String(body));
 System.out.println(new String(channel));
 }
}

其中message为redis返回的通知,body为超时的key的名字,channel为超时事件

创建listener配置类

@Configuration
public class RedisListenerConfiguration {

 @Bean
 public RedisMessageListenerContainer getListenerContainer(RedisConnectionFactory connectionFactory){
 //创建连接容器
 RedisMessageListenerContainer container = new RedisMessageListenerContainer();
 //放入redis连接
 container.setConnectionFactory(connectionFactory);
 //写入需要被监听的类型,即超时监听
 Topic topic = new PatternTopic("__keyevent@0__:expired");
 container.addMessageListener(new TopicMessageListener(), topic);
 return container;
 }
}

之后当有键值过期时,redis会发送通知被上面的TopicMessageListener接收,在该类中即可调用对应的业务方法进行业务处理。

总结

到此这篇关于Redis开启键空间通知实现超时通知的步骤的文章就介绍到这了,更多相关redis键空间通知内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • redis键空间通知使用实现

    目录 导语 实现 在业务中使用 总结 导语 最近在开发一个定时活动,而且活动是多个场次的.这个是后就需要在活动开始的时候推送信息给客户端,结束的时候也要推送一次.简单的设计方案就是将配置缓存在redis,然后每隔一秒就轮询reids,获取配置信息,然后判断是不是到活动开始或者结束的时间点,然后推送给客户端. 但是,这里会有一个问题,如果没有到活动开始或结束的时间点,这里会造成很多无用的轮询操作.这个操作不但增大了对这个key的访问量,同时也会占用cpu,降低机器性能. redis在2.8.0版本

  • 大家都应该知道的Redis过期键与过期策略

    今天,我和大家分享一篇关于 Redis 有关过期键的内容,主要有四个内容: 如何设置过期键 如何取消设置的过期时间 过期键的过期策略是怎样的 RDB.AOF 和复制对过期键的处理又是怎样的 设置键的生存时间或过期时间 redis 一共有 4 个命令来设置键的生存时间(可以存活多久)或过期时间(什么时候被删除) expire <key> <ttl>:将 key 的生存时间设置为 ttl 秒 pexpire <key> <ttl>:将 key 的生存时间设置为

  • redis学习之RDB、AOF与复制时对过期键的处理教程

    生成RDB文件 在执行SAVE命令或者BGSAVE命令创建一个新的RDB文件时,程序会对数据库中的键进行检查,已过期的键不会被保存到新创建的RDB文件中. 举个例子,如果数据库中包含三个键k1.k2.k3,并且k2已经过期,那么当执行SAVE命令或者BGSAVE命令时,程序只会将k1和k3的数据保存到RDB文件中,而k2则会被忽略. 因此,数据库中包含过期键不会对生成新的RDB文件造成影响. 可参考rdb.c中函数rdbSave()函数源码: /* Iterate this DB writing

  • Redis 2.8-4.0过期键优化过程全纪录

    前言 之前 白馨(陌陌-技术保障部存储工程师 )在Redis技术交流群里,总结了一下Redis从2.8~4.0关于过期键相关的fix记录,非常有帮助,但有些东西未尽详细,本文将进行详细说明. 先从一个问题来看,运行环境如下: Redis: 2.8.19 db0:keys=10000000,expires=10000000 主从结构 从下图中可以看到,在从节点get hello非空,在主节点get hello为空,之后从节点get hello为空,经排查主从同步offset基本正常,但出现了主从不

  • 使用redis实现延迟通知功能(Redis过期键通知)

    Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为的需求 , 比如 30 分钟之后关闭订单 . 网上有很多使用 Redis 过期监听的 Demo redis配置 把notify-keyspace-events Ex 这一行的注释打开 项目demo工程 项目结构如下图 maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apa

  • Redis开启键空间通知实现超时通知的步骤

    Redis部分设置 修改配置文件redis.conf(Windows为redis.windows.conf) 打开该配置文件(位置取决于自己的安装位置),找到Event notification部分. 将notify-keyspace-events Ex的注释打开或者添加该配置,其中E代表Keyevent,此种通知会返回key的名字,x代表超时事件. 如果notify-keyspace-events ""配置没有被注释的话要注释掉,否则不会生效. 保存后重启redis,一定要使用当前配

  • Redis开启键空间通知实现超时通知的步骤详解

    Redis部分设置 修改配置文件redis.conf(Windows为redis.windows.conf) 打开该配置文件(位置取决于自己的安装位置),找到Event notification部分. 将notify-keyspace-events Ex的注释打开或者添加该配置,其中E代表Keyevent,此种通知会返回key的名字,x代表超时事件. 如果notify-keyspace-events ""配置没有被注释的话要注释掉,否则不会生效. 保存后重启redis,一定要使用当前配

  • redis for windows 6.2.6安装包最新步骤详解

    redis for windows 6.2.6安装包全网首发 这是冰河之刃 渡桥计划的一部分,使用Windows计划任务自动运行redis服务. 下载地址: 码云https://gitee.com/binghe021/redis-setup github https://github.com/binghe021/redis-setup 提醒:个人研究不设置密码可以理解,但非个人研究用时一定要设置密码.切记,安全第一.修改密码方法: 1 在计划任务中暂时禁用掉Auto_Run_RedisServe

  • Linux Redis 的安装步骤详解

     Linux Redis 的安装步骤详解 前言: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. redis 是完全开源免费的,是一个高性能的key-value数据库.Re

  • Redis 对比 Memcached 并在 CentOS 下进行安装配置详解

    Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,本篇文章主要介绍了Redis 对比 Memcached 并在 CentOS 下进行安装配置详解,有兴趣的可以了解一下. 了解一下 Redis Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,使用 ANSI C 编写,并提供多种语言的 API ,它几乎没有上手难度,只需要几分钟我们就能完成安装工作,并让它开始与应用程序顺畅协作.换句话来说,只需投入一小部分时间与精力,大家就能获得立竿

  • SpringBoot通过redisTemplate调用lua脚本并打印调试信息到redis log(方法步骤详解)

    第一次写Lua脚本,并通过springboot的redisTemplate调用脚本,进行脚本与应用的交互.不熟悉真的折腾了好久,现在总结一下学习过程: 第一次写完lua时,想到的就是如何在应用调用脚本的时候,去调试脚本.在网上海搜了一把,能找到的有点相关的寥寥无几. 有一种方法是通过执行redis命令,调用redis客户端,加载lua脚本,然后出现基于命令行调试的交互界面,输入调试命令去调试脚本.如下: 在终端输入命令:redis-cli.exe --ldb --eval LimitLoadTi

  • php登录超时检测功能实例详解

    php登录超时检测功能实例详解 前言: php登录超时问题,当用户超过一定时间没有操作页面时自动退出登录,原理是通过js进行访问判断的!代码如下(以thinkphp5.0版本为例) 1.创建登录版块控制器: <?php namespace app\manage\control; use \think\Controller; class Main extends Controller{ protected $request; public function _initialize(){ $this

  • linux下防火墙开启某个端口号及防火墙常用命令使用(详解)

    1.永久性生效,重启后不会复原 开启:chkconfigiptables on 关闭:chkconfigiptables off 2.即时生效,重启后复原 重启防火墙 方式一:/etc/init.d/iptables restart 方式二:service iptables restart 关闭防火墙: 方式一:/etc/init.d/iptables stop 方式二:service iptables stop 启动防火墙 方式一:/etc/init.d/iptables start 方式二:

  • MongoDB开启权限认证的方法步骤详解

    前言 最近在生产环境中MongoDB已经使用有一段时间了,但对于MongoDB的数据存储一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),最近在酷壳网看了一篇技术文章(https://coolshell.cn/?s=从+MONGODB+"赎金事件"+看安全问题&from=timeline&isappinstalled=0)介绍的mongodb未开启权限认证导致数据被黑客窃取,要比特币赎回的事件,考虑到数据安全的原因特地花了一点时间研究了一下,我现在用的版

  • Redis集群增加节点与删除节点的方法详解

    前言 本文主要是承接上一篇文章Redis集群的离线安装成功以后,我们如何进行给集群增加新的主从节点(集群扩容)以及如何从集群中删除节点(集群缩容),也就是集群的伸缩,集群伸缩的原理是控制虚拟槽和数据在节点之间进行移动,通过实际操作来整理一下集群的伸缩. 上篇文章中搭建好的集群为三主三从,端口号为7000.7001.7002.7003.7004.7005. 查看集群启动情况:ps -ef | grep redis 查看集群的slots分配情况以及节点之间的主从关系: 首先登陆节点7000:redi

随机推荐