RedisServer包含兩個重要的結構:
1. channels:實際上就是一個key-value的Map結構,key為訂閱地頻道,value為Client的List
2. patterns:存放模式+client位址的清單
從pubsub_channels中找出跟publish中channel相符的clients-list,然後再去pubsub_patterns中找出每一個相符的pattern和client。向這些用戶端發送publish的消息。
在程式終止或者類的執行個體被銷毀的時候,請将訂閱者執行個體登出掉,否則,在redis中一直存在這個訂閱者。
Redis 釋出端
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
(integer) 1
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by tutorials point"
Redis訂閱端:
redis 127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
現在,兩個用戶端都釋出在同一個通道名redisChat消息及以上的訂閱用戶端接收消息。
釋出後的消息會被多個訂閱端同時接收到
本文轉自 DBAspace 51CTO部落格,原文連結:http://blog.51cto.com/dbaspace/1868995