常見的Redis面試"刁難"問題-附個人實操之四

之前在某個公眾號下看到老錢的一篇文章,題目是《十個常見的Redis面試“刁難”問題》,感覺寫的很好,不過里面的解答對于我這種小白來說并不是很全面,所以在這里實際操作、思考一番,并把自己的所得簡單記錄下來。

原文參考:https://mp.weixin.qq.com/s/Z4a8wbWvPDGFTkKJH0X9VQ

Redis的事務了解嗎?
MULTI,EXEC操作:事務的開始和結束標記
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k1 1
QUEUED
127.0.0.1:6379> set k2 1
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get k1
"1"
127.0.0.1:6379> get k2
"1"
127.0.0.1:6379> 

執(zhí)行Multi命令,redis反饋ok表示開始事務;執(zhí)行EXEC命令,結束事務,開始順序執(zhí)行事務中的操作。

錯誤處理

語法錯誤:執(zhí)行命令不存在或參數(shù)不對,都是語法錯誤,只有事務中有一處錯誤,redis執(zhí)行exec命令后,會直接返回錯誤,正確的命令也不會被執(zhí)行。 — 下面例子是輸錯命令了,所以全部都不執(zhí)行

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name zhangsan
QUEUED
127.0.0.1:6379> set sex nan
QUEUED
127.0.0.1:6379> ssas aget 1
(error) ERR unknown command 'ssas'
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> 

運行錯誤:此類錯誤執(zhí)行命令沒錯,但是操作對應的鍵有誤,會造成運行時才會發(fā)現(xiàn)的錯誤,但是不影響其它正確命令的執(zhí)行。

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k 10
QUEUED
127.0.0.1:6379> sadd k 20
QUEUED
127.0.0.1:6379> set k 200
QUEUED
127.0.0.1:6379> exec
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
3) OK
127.0.0.1:6379> get k
"200"
127.0.0.1:6379> 

這種運行時錯誤,可以看到,不影響整體的執(zhí)行

WATCH命令

監(jiān)控指定鍵,若被監(jiān)控的鍵在以下事務執(zhí)行前被修改,則包含對此鍵有操作動作的事務不執(zhí)行,返回nil。

127.0.0.1:6379> set k 30
OK
127.0.0.1:6379> get k
"30"
127.0.0.1:6379> 
127.0.0.1:6379> watch k
OK
127.0.0.1:6379> set k 40
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k 50
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get k
"40"
127.0.0.1:6379> 

可以看到,如果watch的key在事務執(zhí)行前被修改了,事務就不會執(zhí)行,exec返回的是nil,key對應的value也不修改,依然是事務之外設置的值。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • MULTI、EXEC、DISCARD和WATCH命令是Redis事務功能的基礎。Redis事務允許在一次單獨的步驟...
    金星show閱讀 579評論 0 0
  • 1.什么是redis? Redis 是一個基于內(nèi)存的高性能key-value數(shù)據(jù)庫。 2.Reids的特點 Red...
    java成功之路閱讀 463評論 0 8
  • 文章已經(jīng)放到github上 ,如果對您有幫助 請給個star[https://github.com/qqxuanl...
    尼爾君閱讀 2,343評論 0 22
  • 【本教程目錄】 1.redis是什么2.redis的作者3.誰在使用redis4.學會安裝redis5.學會啟動r...
    徐猿猿閱讀 1,918評論 0 35
  • 蘇大侍御訪江浦,賦八韻記異 作者:杜甫 龐公不浪出,蘇氏今有之。 再聞誦新作,突過黃初詩。 乾坤幾反覆,揚馬宜同時...
    江南莫之閱讀 737評論 6 24

友情鏈接更多精彩內(nèi)容