1. 程式人生 > 其它 >Redis事務及訊息釋出與訂閱

Redis事務及訊息釋出與訂閱

技術標籤:Redisredis

Redis事務

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

命令作用
multi用來標記一個事務的開始,將執行的一組命令放到佇列中。
exec用來執行事務
discard清除所有已經放入事務佇列中的命令,並且結束整個事務。
watch監控某一個key,當事務在執行過程中,對應的value發生變化
unwatch [key]放棄監控某個或者所有的key

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

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

使用事務案例

watch version
multi
decrby balance 50
incrby balance2 50
exec

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

Redis事務特點

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

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

Redis訊息釋出與訂閱

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

相關命令

命令作用
subscribe訂閱一個或者多個頻道
psubscribe訂閱一個或者多個頻道,頻道名支援萬用字元。
publish將訊息釋出到指定頻道