把一組資料庫運算元據庫的語句放在一起執行,保證操作的原子性。要麼同時成功要麼同時失敗。在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...