接收键空间通知有2种情况:
1、一种是接收指定键值所执行的命令,在配置文件中体现是: notify-keyspace-events K[命令集] ;K代表是监听键值,监听其中命令集包括了:
g : 常规命令 del expire rename等等
$: 字符串命令
l : 列表命令
s:集合命令
h:hash命令
z:有序集合命令
x :超时命令
例子1):
在配置文件(redis.conf)中设置:
#notify-keyspace-events ""
notify-keyspace-events K$
表明我们需要监听字符串所执行的命令;
客户端1监听:
127.0.0.1:6379> SUBSCRIBE __keyspace@0__:message
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "__keyspace@0__:message"
3) (integer) 1
1) "message"
2) "__keyspace@0__:message"
3) "set"
1) "message"
2) "__keyspace@0__:message"
3) "append"
1) "message"
2) "__keyspace@0__:message"
3) "append"
客户端2执行:
127.0.0.1:6379> set message 123
OK
127.0.0.1:6379> get message
"123"
127.0.0.1:6379> append message "-3444555"
(integer) 11
127.0.0.1:6379> append message "-3444555"
(integer) 19
可以看出例子1:我们执行 修改的命令有:set append 都在客户端1进行返回。
2、监控指定的命令,配置文件中体现:notify-keyspace-events E[命令集] ;E代表监听命令,后面的命令集合上面的一样
例子1)、
配置文件:
#notify-keyspace-events ""
notify-keyspace-events Elg
表明我们监控list列表基础命令
客户端1监听:
127.0.0.1:6379> SUBSCRIBE __keyevent@0__:delReading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "__keyevent@0__:del"
3) (integer) 1
1) "message"
2) "__keyevent@0__:del"
3) "list2"
1) "message"
2) "__keyevent@0__:del"
3) "mylist1"
1) "message"
2) "__keyevent@0__:del"
3) "list1"
客户端2执行:
127.0.0.1:6379> keys *
1) "list2"
2) "mylist1"
127.0.0.1:6379> del list2 mylist1
(integer) 2
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> LPUSH list1 abc
(integer) 1
127.0.0.1:6379> LPUSH list1 abc def
(integer) 3
127.0.0.1:6379> LRANGE list1 0 -1
1) "def"
2) "abc"
3) "abc"
127.0.0.1:6379> del list1
(integer) 1
127.0.0.1:6379>