首页 > 数据库 >八、Redis key空间通知

八、Redis key空间通知

时间:2024-10-04 17:26:50浏览次数:10  
标签:__ commands 通知 redis keyspace key Redis

redis的key空间通知是实时监控Redis键和值的更改。那什么是key空间通知呢?当客户端执行一些命令,比如 set name Tom,会创建或更新key。此时Redis服务器会将这些事件发布到通道中,客户端可以通过subscribe通道,以便接收以某种方式影响Redis数据集的事件。如果发布/订阅客户端断开连接,然后重新连接,则客户端断开期间传递的所有事件都将丢失。

Keyspace通知是通过为影响Redis数据空间的每个操作发送两种不同类型的事件来实现的。例如,针对数据库0中名为mykey的键的DEL操作将触发两条消息的传递,这与以下两个PUBLISH命令完全等效:

PUBLISH __keyspace@0__:mykey del
PUBLISH __keyevent@0__:del mykey

第一个通道监听所有针对mykey的事件,另一个通道仅监听del操作事件。

默认情况下,key空间事件通知被禁用。可以配置redis.conf的notify keyspace选项或通过CONFIG SET启用通知。将参数设置为空字符串将禁用通知。为了启用该功能,使用了一个由多个字符组成的非空字符串,根据下表,每个字符都有特殊含义:

K     将事件发布到__keyspace@<db>__为前缀的通道中。
E     将事件发布到__keyevent@<db>__为前缀的通道中。
g     启用通用类型的命令,比如:DEL, EXPIRE, RENAME ...
$     String commands
l     List commands
s     Set commands
h     Hash commands
z     Sorted set commands
t     Stream commands
d     Module key type events
x     key过期
e     key被淘汰出内存
m     key不存在
n     New key events (Note: not included in the 'A' class)
A     "g$lshztxed"的别名

现在通过CONFIG SET命令临时启用配置,在redis-cli中执行:

config set notify-keyspace-events KEA

在执行:

config get notify-keyspace-events

检查配置是否临时生效。

在redis-cli中执行:

psubscribe __keyspace@0__:*

订阅事件。在另一个redis-cli中执行set name tom。查看:

关闭后重新订阅:

psubscribe __key*

在另一个redis-cli中执行set name tom1。查看:

现在看到了两条消息。

标签:__,commands,通知,redis,keyspace,key,Redis
From: https://www.cnblogs.com/shigongp/p/18446731

相关文章

  • 七、Redis之sorted set
    sortedset也是Redis中常用的类型。可以用来解决热搜,排名前十等问题。ZADDZADDkey[NX|XX][GT|LT][CH][INCR]scoremember[scoremember...]zadd将多个分数和元素对添加到sortedset中。还有些选项影响了zadd的行为:XX:仅更新已存在的元素。不要添加新元素。NX:只添加......
  • 【SpringBoot】结合Redis实现缓存
    Redis经常用于缓存。接下来,我们以Springboot框架为例。实现一些Redis的基础操作,创建完SpingBoot项目后,具体步骤如下图:  pom中添加项目依赖<!--Redis缓存--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-re......
  • Spring源码(13)--AOP 连接点及通知的方法调用的源码
    AOP基础知识AOP基础知识,详情见:https://blog.csdn.net/sinat_32502451/article/details/142291052AOP源码,详情见:https://blog.csdn.net/sinat_32502451/article/details/142291110ProceedingJoinPoint在上面的示例中,运用到了ProceedingJoinPoint。ProceedingJoinPoint是......
  • redis设计统计用户访问量
    需求:实现某个接口每天调用了多少次,每个用户只记录一次。(例如,统计刷题模块,练题模块,模拟面试模块每天访问量,利于后续针对功能访问量做出其他优化设计。贴子的浏览量)先分析几种不同的方案:方案一:使用Hash哈希结构实现方法:当用户访问网站时,我们可以使用用户的ID作为标识(若用户未......
  • 六、redis之set
    Redis集合是成员的无序集合。可以用来保存唯一的成员。注意:对于以下的命令,涉及删除成员的,如果集合中的所有元素都被移除,则集合会被删除。如果集合原先不存在,被当作空集合。SADDSADDkeymember[member...]sadd命令将一系列成员添加到set中。SMEMBERSSMEMBERSkeysmemb......
  • Redis 发布订阅模式
    概述Redis的发布/订阅是一种消息通信模式:发送者(Pub)向频道(Channel)发送消息,订阅者(Sub)接收频道上的消息。Redis客户端可以订阅任意数量的频道,发送者也可以向任意频道发送数据。在发送者向频道发送一条消息后,这条消息就会被发送到订阅该频道的客户端(Sub)Redis有两种发布/订阅模式......
  • WPF FindResource,Resource[key] SystemColors TryFindResource
    //xaml<Windowx:Class="WpfApp3.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.micr......
  • Redis: Sentinel工作原理和故障迁移流程
    Sentinel哨兵几个核心概念1)定时任务Sentinel它是如何工作的,是如何感知到其他的Sentinel节点以及Master/Slave节点的就是通过它的一系列定时任务来做到的,它内部有三个定时任务第一个就是每一秒每个Sentinel对其他Sentinel和Redis节点执行PING操作(监......
  • 五、redis之hash
    redis的hash类型就是平时说的hash表,字典。类似于Java中的HashMap。可以用来存储对象等结构。现在看下操纵hash类型的命令。HGETHGETkeyfieldhget获取hash中的field字段的值。HSETHSETkeyfieldvalue[fieldvalue...]hset命令将多个fieldvalue键值对设置到key中。......
  • 通过码流串,格式为key,len,val。提供key,查找val的算法。
    1importjava.util.ArrayList;2importjava.util.HashMap;3importjava.util.UUID;45publicclassHuaweiTest{67publicstaticvoidmain(String[]args){8//System.out.println("HelloWorld!");9Strin......