Redis事務及訊息發布與訂閱

2021-10-18 05:27:53 字數 1276 閱讀 8596

把一組資料庫運算元據庫的語句放在一起執行,保證操作的原子性。要麼同時成功要麼同時失敗。在redis的事務中,允許把一組redis命令放在一起,把命令序列化,然後一起執行,保證部分原子性。

命令

作用multi

用來標記乙個事務的開始,將執行的一組命令放到佇列中。

exec

用來執行事務

discard

清除所有已經放入事務佇列中的命令,並且結束整個事務。

watch

監控某乙個key,當事務在執行過程中,對應的value發生變化

unwatch [key]

放棄監控某個或者所有的key

如果在放入事務的佇列時,命令發生嚴重的錯誤就會無法保證事務的原則性。此時執行事務就會報錯。

如果一組命令中,在放入事務佇列的過程正常,但是在執行事務佇列命令時發生了錯誤,則只會影響發生錯誤的命令,不會影響其他命令的執行,所以不能保證事務的原子性。

watch version

multi

decrby balance 50

incrby balance2 50

exec

這個案例模擬的是轉賬場景,事務開始之前監控的是version,當version發生改變說明有人對賬戶中的餘額進行 了變動。

1、單獨的的隔離操作:事務中的所有命令都會序列化、順序的執行。事務在執行過程中,不會被其他客戶端發來的命令請求所打斷,除非使用watch命令監控某些鍵

2、不保證事務的原子性:redis同在乙個事務中如果一些命令執行失敗,其後的命令仍然可能會執行成功,redis的事務沒有回滾。由於redis是一種記憶體資料庫所以為了提高效能犧牲了事務的回滾操作。

redis訊息發布與訂閱是指:redis客戶端之間的通訊。redis為了實現客戶端之間的通訊所以提出了"頻道"的概念,當redis客戶端訂閱頻道時,訊息的發布者只需要在該頻道上發布訊息即可。

命令

作用subscribe

訂閱乙個或者多個頻道

psubscribe

訂閱乙個或者多個頻道,頻道名支援萬用字元。

publish

將訊息發布到指定頻道

redis發布訂閱及事務

redis發布訂閱 例 訂閱者 redis 127.0.0.1 6379 subscribe redischat reading messages.press ctrl c to quit 1 subscribe 2 redischat 3 integer 1 發布者 redis 127.0.0.1...

Redis訊息發布與訂閱

1.publish channel message 定義乙個channel並在其上發布訊息,例如 這裡定義了news,並在news上發布了hello訊息,返回值是1,說明有乙個訂閱者收到了發布的訊息,如果有多個訂閱者,會將顯示所有訂閱者的數量。2.subscribe channel 訂閱乙個chan...

Redis 訊息發布與訂閱

使用方法 127.0.0.1 6379 publish news this is a test integer 0 127.0.0.1 6379 新開乙個redis cli 訂閱端 127.0.0.1 6379 subscribe news reading messages.press ctrl c...