Redis 事務 Multi和CAS 的實現

2021-09-01 19:53:29 字數 521 閱讀 5542

redis也有事務的功能,但是這個事務可能跟mysql之類的rdbms不同。官網上的

transactions

介紹了redis中的事務。redis中使用multi和exec命令設定事務邊界,discard在multi命令提交後可丟棄事務。另外watch命令可以實現cas操作。

redis中的事務歸納一下有這麼幾個特點

這裡需要解釋的是為什麼redis提供的事務不支援錯誤回滾?原因是redis作為快取系統,命令被程式設計到程式裡一般不會出錯(錯誤如引數個數出錯,型別出錯等),如果發生出錯,說明是程式出現了問題,在生產環境下一般不會這類問題。並且這樣的事務在redis實現非常簡單,因為redis是單執行緒程式,所以只要儲存事務操作最後一起執行就實現了原子性操作,如果增加回滾會影響redis效能。 cas操作應用於下面這個場景 watch stringa stringa_r = stringa + 「abcd」 multi set stringa string_r exec 這類場景很常見,當stringa被watch後如果發生變動,那麼下面的事務就會失敗。

multi事務 watch命令

本文章是個人筆記,由學習multi okredis sadd user 1 following 2 queued redis sadd user 2 followers 1 queued redis exec 1 integer 1 2 integer 1 上面的 演示了事務的使用方式。首先使用mu...

redis中multi與pipeline介紹分析

由於對redis快取中資料有批量操作,例如預熱快取資料,或者在列表頁批量去獲取快取資料,在使用了multi批量提交事務後,發現redis壓力高居不下,而使用了pipeline之後壓力回落了平常,也因為這個案例,特在此寫個分析與筆記。標記乙個事務塊的開始。事務塊內的多條命令會按照先後順序被放進乙個佇列...

redis 事務和鎖

redis與 mysql事務的對比 在mutil後面的語句中,語句出錯可能有2種情況 redis 鎖 redis流水線 效能測試 set time limit 0 ini set memory limit 1024m redis new redis g 1 redis connect 127.0.0...