当我们想在客户端订阅redis中的各种key的变化时,可以通过修改redis.windows.conf实现。
通知是通过普通的pub/sub订阅发送的,所以通知并不完全可靠,客户端离线的时候的通知是收不到的;
EVENT NOTIFICATION
redis.windows.conf中EVENT NOTIFICATION是配置redis事件通知的,其配置如下:
K:Keyspace事件,以__keyspace@__为前缀发布订阅消息;
E:Keyevent事件,以__keyevent@__为前缀发布订阅消息;
g:通用命令(非特定类型),例如DEL、 EXPIRE、RENAME等类型无关命令的通知;
$ 字符串命令
l:List命令;
s:Set命令;
h:Hash命令;
z:Sorted Set命令;
x:过期事件;(每个key过期时通知的,过期key从内存清除时,并不一定是准确过期时间)
e:驱逐事件;(由于释放内存驱逐key时通知)
n:new key事件;(不包含在A中)
t:Stream命令;
d:模块key类型事件;
m:Key-miss事件;(当访问不存在的键时通知,不包含在A中)
A:g$lshzxetd的别名,用“AKE”可表示所有事件通知(除了特殊的Key-miss事件)
notify-keyspace-events “”
注:至少要有K或者E才能使配置生效;
事件有两种类型:以keyspace前缀的Key-space通知和以keyevent前缀的Key-event通知;(可以自己选择开启两种通知或者只开启其中一种)
键空间通知
键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。订阅方法:
subscribe keyspace@:
eg:subscribe keyspace@0:zx
该方法可订阅redis中0号库中key为zx的变化通知
键事件通知
subscribe keyevent@:
eg:subscribe keyevent@0:del
该方法可订阅redis中0号库中所有del命令的事件通知