基于Redis的发布订阅机制,我们就可以实现数据库通知功能了。该功能常常用于作为对数据或者命令的监控。
因为开启数据库通知需要消耗一定的CPU,所以默认配置下,是关闭状态的。为了开启这个功能更,我们可以修改redis.conf文件:
1 | notify-keyspace-events KElg |
如上,我们开启了:
- K:键空间通知,所有通知以
__keyspace@<db>__
为前缀; - E:键事件通知,所有通知以
__keyevent@<db>__
为前缀; - l:列表命令通知;
- g:
DEL
、EXPIRE
、RENAME
等类型无关的通用命令的通知。
更多关于notify-keyspace-events
的配置,请参考官方文档:Redis Keyspace Notifications[1]
现在我们启动Redis服务器,就支持数据库通知了。
现在我们在一个客户端1订阅一个键空间通知,监听我的钱包my_money:
1 | 127.0.0.1:6379> SUBSCRIBE __keyspace@0__:my_money |
在另一个客户端2,给我的钱包打100块钱看看:
1 | 127.0.0.1:6379> SET my_money 100 |
结果我们在客户端1可以收到以下到账通知:
1 | 1) "message" |
另外,我们也可以监听某一个命令:
1 | 127.0.0.1:6379> SUBSCRIBE __keyevent@0__:del |