美文网首页
Spring Data Redis-keyspace notif

Spring Data Redis-keyspace notif

作者: 人呆木水 | 来源:发表于2016-05-07 18:33 被阅读674次

    观察者模式

    这种创建一个消息中心, 所有消息发布者发布消息到中心, 中心把消息通知到各订阅者的设计模式在GUI程序的事件模型中使用比较多。

    而放在WEB应用中,主要用来解决流程计时, 以及代替轻量级的实时队列的功能(如计数的逻辑的异步)。

    Channel

    频道, 每一个订阅者可根据频道选择自己喜欢的信息,一个订阅者可能对多个频道有兴趣。 但一个消息发布者不宜把消息发布到多个频道中, 至于说为什么不宜发布到多个频道中, 我这暂时很难拿出一个合理的数学证明。 不过有个很简单的逻辑, 如果一个订阅者订阅了多个频道, 一个消息又发到了多个频道, 那么一个订阅者就可会收到重复的消息,即使消息中心应该处理这个重复的消息, 但明显处理逻辑增加了,遍历订阅者的次数也增加了。 具体分析依赖于实现。

    === Keyspace Notifications

    其官网这样描述

    Keyspace notifications allows clients to subscribe to Pub/Sub channels in order to receive events affecting the Redis data set in some way.
    Examples of the events that is possible to receive are the following:
    All the commands affecting a given key.
    All the keys receiving an LPUSH operation.
    All the keys expiring in the database 0.
    Events are delivered using the normal Pub/Sub layer of Redis, so clients implementing Pub/Sub are able to use this feature without modifications.

    Redis 是一个键值对的系统, 其数据变化会产生事件, 具体内容可参考 http://redis.io/topics/notifications

    这里我想用来做流程计时, 所以关心的是 EXPIRE 事件。 Keyspace notifications 消耗CPU,默认是关闭的,所以需要在配置文件中声明, 下面是可控粒度。

    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.

    Spring Data Redis

    其配置可参考 http://docs.spring.io/spring-data/redis/docs/1.7.1.RELEASE/reference/html/#redis:pubsub:subscribe 没什么可说的, 但需要注意的是, 需要使用org.springframework.data.redis.listener.PatternTopic 来使得订阅者订阅多个频道。

    其它

    这里实现的观察者模式比较简单, 但事实上,我们也暂时不用去考虑观察者的冲突,时效,处理时间与堆积,处理优先的问题。

    相关文章

      网友评论

          本文标题:Spring Data Redis-keyspace notif

          本文链接:https://www.haomeiwen.com/subject/wsqsrttx.html