对于每个修改数据库的操作,键空间通知都会发送两种不同类型的事件:键空间通知(key-space)和键事件通知(key-event)。
当执行 del key1
命令时:
- 键空间频道的订阅者将接收到被执行的事件的名字,在这个例子中,就是
del
- 键事件频道的订阅者将接收到被执行事件的键的名字,在这个例子中,就是
key1
Redis配置
只需修改配置文件redis.conf中的notify-keyspace-events
参数,参数可以是以下字符的任意组合, 它指定了服务器该发送哪些类型的通知:
# 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”意味着所有的事件
输入的参数中至少要有一个 K 或者 E,否则的话,不管其余的参数是什么,都不会有任何通知被分发。
测试
客户端A订阅 psubscribe __keyevent@0__:*
客户端B发起操作
[root@chokingwin etc]# redis-cli
127.0.0.1:6379> set name aaa
OK
客户端A能接收到通知
1) "pmessage"
2) "__key*@0__:*"
3) "__keyspace@0__:name"
4) "set"
1) "pmessage"
2) "__key*@0__:*"
3) "__keyevent@0__:set"
4) "name"