更新時間:2022-02-15 09:22:38 來源:動力節點 瀏覽1005次
Redis 的 Pub/Sub 消息傳遞可以擴展以創建有趣的分布式事件。假設我們有一個存儲在散列中的結構,但我們只想在特定字段超過訂閱者定義的數值時更新它的客戶端。我們將監聽通道模式,然后才在status處獲取哈希。在本例中,我們只對介于 5 和 9 之間的 update_status 感興趣。
> PSUBSCRIBE update_status:[5-9]
1) "psubscribe"
2) "update_status:[5-9]"
3) (整數) 1
[等待]
要更改status/error_level的值,我們將有一個子例程按順序或在MULTI/EXEC 塊中運行兩個命令。第一個命令設置級別,第二個命令發布通知,其值編碼在通道本身中。
> HSET狀態 error_level 5
(integer) 1
> PUBLISH update_status:5 0
(integer) 1
當收到消息時,我們的客戶端應用程序切換到備用客戶端并發出HGETALL命令:
> HGETALL 狀態
1) “error_level”
2) “5”
3) “last_error”
4) “Crawler 返回 404”
5) “timestamp”
6) “1511467605734”
然后,我們可以使用它來更新長時間運行進程的局部變量。這可以允許同一進程的多個實例以實時方式“共享”數據。
與僅使用 Pub/Sub 相比,這種模式的好處在于,當進程重新啟動時,它可以簡單地獲取整個狀態Redis哈希并開始偵聽。然后,這些更改將在任意數量的進程中同步。如果實例與 Redis 服務器斷開連接,作為重新連接的一部分,服務器可以獲取狀態哈希并重新開始偵聽。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習