监视redis服务器的数据变化


类型:LinuxApp,创建时间:Jan. 26, 2016, 5:38 p.m.

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/99/。

在某些情况下,我们往redis服务器里面存储了大量的数据。这么大量的数据,我们怎么样看到数据发生了哪些变化呢?新版本的redis提供了事件监听,可以把数据内所有的事件变化都打印出来。它的使用方法很简单。

  1. 首先打开发送数据事件。这个特性会额外消耗CPU,所以一般不要用。推荐使用命令行打开这个功能:

    $ redis-cli
    redis> config set notify-keyspace-events KA
    

    根据[http://redis.io/topics/notifications]的说明,参数有多种:

    K     Keyspace events, published with __keyspace@<db>__ prefix.
    E     Keyevent events, published with __keyevent@<db>__ prefix.
    g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
    $     String commands
    l     List commands
    s     Set commands
    h     Hash commands
    z     Sorted set commands
    x     Expired events (events generated every time a key expires)
    e     Evicted events (events generated when a key is evicted for maxmemory)
    A     Alias for g$lshzxe, so that the "AKE" string means all the events.
    

    参数里面要么存在K要么存在EA表示监听所有的命令发出的事件。有大量的命令都会发出事件通知。分别使用一不同的字母来表示不同的数据类型命令。比如Kls表示监听List和Set两种数据类型的事件。

  2. 开始监听事件。redis-cli会把接下来的所有变化都打印出来。

    redis> psubscribe '__key*__:*'
    

    psubscribe使用正则表达式来匹配来监听的事件。这里表示匹配所有的事件。发出的事件大概是这样子的:__keyspace@0__:foo,其中@0表示位于0号数据库,而foo则表示发生变化的key。redis-cli还会打印发出此事件的命令。

  3. 想要结束了,按Ctrl+C就行。不过似乎也会把redis-cli也直接关掉。最好是重新运行一下redis-cli,然后禁用这个特性:

    redis> config set notify-keyspace-events ""
    

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/99/。


暂时还没有任何评论。


何不来发表一下您对本文的看法(使用Markdown语法,分段空两行):