通過subscribe命令,客戶端可以訂閱乙個或多個頻道,每當有其他客戶端向被訂閱的頻道傳送訊息,頻道的訂閱者都會收到訊息
通過psubscribe命令,客戶端可以訂閱乙個或多個模式,每當有其他客戶端向被訂閱的頻道傳送訊息,與該頻道相匹配的模式訂閱者也會收到
redisserver中用乙個字典儲存了所有頻道的訂閱關係,字典的鍵是頻道名,字典的值是乙個鍊錶,儲存了訂閱的客戶端
struct18.1.1 訂閱頻道redisserver
將頻道和對應的客戶端插入字典pubsub_channels中,若已有將新加入的客戶端放到煉表表尾
18.1.2 退訂頻道
在字典中找到對應的鍵,遍歷鍊錶刪除相應的客戶端,刪除之後成了空鍊錶,則刪除對應的鍵
redisserver中用乙個鍊錶儲存了所有模式的訂閱關係
struct鍊錶的每個節點包含了乙個pubsubpattern結構redisserver;
typedef struct18.2.1 訂閱模式pubsubpatternpubsubpattern;
客戶端執行psubscribe命令訂閱某個模式,伺服器會新建乙個pubsubpattern物件,插入到pubsub_patterns鍊錶的末尾
18.2.2 退訂模式
在pubsub_patterns中查到所屬的節點並刪除
客戶端執行publish
18.3.1 將訊息傳送給頻道訂閱者
從pubsub_channels字典中找到對應的鍵,取出值物件(乙個鍊錶),遍歷鍊錶,找到對應頻道下的所有訂閱者,將訊息傳送往這些訂閱者
18.3.2 將訊息傳送給模式訂閱者
查詢鍊錶,找出匹配模式的訂閱者,將訊息傳送給訂閱者
缺點:不持久化訊息,不保證客戶端一定接收到訊息
第十八章 B樹
施工中施工中 基本操作主要包括 搜尋b樹,建立空b樹,插入關鍵字。18.3放出刪除關鍵字的 class program region 磁碟操作 為結點初始化對應的磁碟頁 private static node t allocate node t 磁碟寫操作 private static void d...
第十八章 定製特性
目錄 18.1 使用定製特性 18.2 定義自己的特性類 18.3 特性構造器和字段 屬性資料型別 18.4 檢測定製特性 18.5 兩個特性例項的相互匹配 18.6 檢測定製特性時不建立從attribute派生的物件 18.7 條件特性類 定製特性 利用定製特性,可宣告式地為自己的 構造新增註解來...
第十八章 18 2 3節練習
練習18.18 已知遊俠面的swap的典型定義 參見13.3節,第457頁 當mem1是乙個string時程式使用swap的哪個版本?如果mem1是int呢?說明在這兩種情況下名字查詢的過程。void swap t v1,t v2 解答 這裡典型定義應該指的是有乙個專為string交換而建立的swa...