我自己用的本机是mac电脑,安装redis后,配置文件地方:/usr/local/etc/redis.conf
修改notify-keyspace-events "AKE",默认是空字符串 表示关掉模式,我们这里开启AKE模式,表示全部开启。
带配置文件启动redis-server /usr/local/etc/redis.conf,用redis-cli去查看是否生效,查看命令:
CONFIG GET notify-keyspace-events
事件的类型
对于每个修改数据库的操作,键空间通知都会发送两种不同类型的事件消息:keyspace 和 keyevent。以 keyspace 为前缀的频道被称为键空间通知(key-space notification), 而以 keyevent 为前缀的频道则被称为键事件通知(key-event notification)。
事件是用 __keyspace@DB__:KeyPattern 或者 __keyevent@DB__:OpsType 的格式来发布消息的。
DB表示在第几个库;KeyPattern则是表示需要监控的键模式(可以用通配符);OpsType则表示操作类型。因此,如果想要订阅特殊的Key上的事件,应该是订阅keyspace。
比如说,对 0 号数据库的键 mykey 执行 DEL 命令时, 系统将分发两条消息, 相当于执行以下两个 PUBLISH 命令:
PUBLISH __keyspace@0__:sampleKey del
PUBLISH __keyevent@0__:del sampleKey
订阅第一个频道 __keyspace@0__:mykey 可以接收 0 号数据库中所有修改键 mykey 的事件, 而订阅第二个频道 __keyevent@0__:del 则可以接收 0 号数据库中所有执行 del 命令的键。
我们来订阅下,命令:PSUBSCRIBE __keyspace@1__:EGW_GLOBAL_INTERFACE*
我们再开启一个客户端,写点东西进去:我们把类型type的key设置为GET
HSET EGW_GLOBAL_INTERFACE:localhost:3909:/get_networking type GET
回到第一个客户端,就可以看到订阅的信息了: