三 redis的高階功能之redis事務

2021-10-11 02:02:18 字數 1020 閱讀 1211

redis單條執行命令是具有原子性的,但是如果遇到多條執行命令的時候,redis如何保證原子性,這時候redis就提供了事務的功能。redis事務是把一組命令一起執行。它會將執行命令先放入到queue中按順序執行,且不會收到其他客戶端的請求的影響,且事務不能巢狀。

開啟事務:multi

…(需要執行的命令)

執行事務:exec

取消事務:discard

tip:大大們,有個小彩蛋,一串執行命令,如果在exec之前,有乙個命令發生了語法錯誤,你們猜會怎麼樣。答案是這一系列的執行命令都不會執行成功,咦!好像原子性保證得還不錯哈(假裝的)。

那如果在執行exec之後發生了錯誤,會不會出現全部回滾呢?

,噢喲,驚訝不驚訝,竟然沒有全部回滾。

這個時候我就想唱:我要這事務有何用…

watch是為了防止事務過程中被watch的key被其他客戶端請求修改,而帶來非預期的效果。watch是可以監視多個key的,如果開啟事務之後,至少有乙個被watch的key在exec之前被其他客戶端修改了,那麼整個事務都將被取消。當然我們也可以防止這樣的情況發生,使用unwatch取消被watch 的key。

如下:我們將k1給watch上,開啟事務,然後incr k1,這時候先別exec,然後開啟另乙個客戶端,將incrby k1 100,再回到之前的客戶端exec,發現返回nil。

好了,今天的redis的事務功能就簡單的介紹完成了。如有錯誤,請各位大大指出,我當竭力修改。 感謝各位大大的閱讀支援!!!

Redis 高階(三) 之 Redis 效能測試

redis 效能測試是通過同時執行多個命令實現的 語法 redis 效能測試的基本命令如下 redis benchmark option option value 注意 該命令是在 redis 的目錄下執行的,而不是 redis 客戶端的內部指令。例項 以下例項同時執行 10000 個請求來檢測效能...

二 redis的高階功能之發布訂閱

上篇我們說了redis的安裝和常用的型別的語法使用,如果找不到鏈結的,請從這個傳送門進入 redis的消費是訊息的生產者和消費者是不同的客戶端,連線到同乙個redis的服務,並且通過乙個channel把生產者和消費者關聯起來。tip 訂閱者可以訂閱多個channel,但是發布者只能發布乙個chann...

四 redis的高階功能之Lua指令碼

lua是一種輕量級指令碼語言,它是用c語言編寫的,跟資料的儲存過程有點類似。我們使用lua指令碼來執行redis命令的好處 上一章我介紹了redis的事務,其中如果在exec之前出現執行命令錯誤,例如語法錯誤,這個時候整個佇列都不會執行 如果在exec之後出現執行命令錯誤,例如hash語法操作str...