Redis 键空间通知

来源:互联网 发布:windows flash player 编辑:程序博客网 时间:2024/05/16 06:05
键空间通知:(发送即忘(fire and forget)策略)
    键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。

    以下是一些键空间通知发送的事件的例子:
        所有修改键的命令。
        所有接收到 LPUSH 命令的键。
        0 号数据库中所有已过期的键。
    事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 因此所有支持订阅与发布功能的客户端都可以在无须做任何修改的情况下, 直接使用键空间通知功能。


    对于每个修改数据库的操作,键空间通知都会发送两种不同类型的事件。
        比如说,对 0 号数据库的键 mykey 执行 DEL 命令时, 系统将分发两条消息, 相当于执行以下两个 PUBLISH 命令:
            PUBLISH __keyspace@0__:mykey del            PUBLISH __keyevent@0__:del mykey
        订阅第一个频道 __keyspace@0__:mykey 可以接收 0 号数据库中所有修改键 mykey 的事件,
        而订阅第二个频道 __keyevent@0__:del 则可以接收 0 号数据库中所有执行 del 命令的键。

配置:
    因为开启键空间通知功能需要消耗一些 CPU , 所以在默认配置下, 该功能处于关闭状态。

    可以通过修改 redis.conf 文件, 或者直接使用 CONFIG SET 命令来开启或关闭键空间通知功能:
        当 notify-keyspace-events 选项的参数为空字符串时,功能关闭。
        当参数不是空字符串时,功能开启。
    notify-keyspace-events 的参数可以是以下字符的任意组合, 它指定了服务器该发送哪些类型的通知:

        K   键空间通知,所有通知以 __keyspace@<db>__ 为前缀
        E   键事件通知,所有通知以 __keyevent@<db>__ 为前缀
        g   DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
        $   字符串命令的通知
        l    列表命令的通知
        s   集合命令的通知
        h   哈希命令的通知
        z   有序集合命令的通知
        x   过期事件:每当有过期键被删除时发送
        e   驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送


    输入的参数中至少要有一个 K 或者 E , 否则的话, 不管其余的参数是什么, 都不会有任何通知被分发。
   eg:        cli: config set notify-keyspace-events KEA             psubscribe '__key*__:*'        然后, 只要在其他终端里用 Redis 客户端发送命令, 就可以看到产生的通知了:        "pmessage","__key*__:*","__keyspace@0__:foo","set"        "pmessage","__key*__:*","__keyevent@0__:set","foo"

0 0
原创粉丝点击