Redis

洞悉Redis技术内幕:缓存,数据结构,并发,集群与算法
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

Redis如何实现数据库通知

发布于 2021-06-16 | 更新于 2024-03-03

基于Redis的发布订阅机制,我们就可以实现数据库通知功能了。该功能常常用于作为对数据或者命令的监控。

因为开启数据库通知需要消耗一定的CPU,所以默认配置下,是关闭状态的。为了开启这个功能更,我们可以修改redis.conf文件:

1
notify-keyspace-events KElg

如上,我们开启了:

  • K:键空间通知,所有通知以__keyspace@<db>__为前缀;
  • E:键事件通知,所有通知以__keyevent@<db>__为前缀;
  • l:列表命令通知;
  • g:DELEXPIRERENAME 等类型无关的通用命令的通知。

更多关于notify-keyspace-events的配置,请参考官方文档:Redis Keyspace Notifications[1]

现在我们启动Redis服务器,就支持数据库通知了。

现在我们在一个客户端1订阅一个键空间通知,监听我的钱包my_money:

1
2
3
4
5
127.0.0.1:6379> SUBSCRIBE __keyspace@0__:my_money
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "__keyspace@0__:my_money"
3) (integer) 1

在另一个客户端2,给我的钱包打100块钱看看:

1
2
127.0.0.1:6379> SET my_money 100
OK

结果我们在客户端1可以收到以下到账通知:

1
2
3
1) "message"
2) "__keyspace@0__:my_money"
3) "set"

另外,我们也可以监听某一个命令:

1
127.0.0.1:6379> SUBSCRIBE __keyevent@0__:del

References


  1. Redis Keyspace Notifications. Retrieved from https://redis.io/topics/notifications ↩︎

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/redis/keyspace-notifications.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。