redis支援事務嗎,有說支援的,有說半支援的,我這裡進行一波演示,看看到底支援不支援。在演示事務之前,首先要了解一下這幾個命令。
multi
開啟事務
exec
執行事務
discard
取消事務
watch key [key ...]
監視事務
unwatch
取消監視事務
下面通過乙個轉賬的例子進行演示事務。
127.0.0.1:6379> multi
ok127.0.0.1:6379> set money 100
queued
127.0.0.1:6379> get money
queued
127.0.0.1:6379> exec
1) ok
2) "100"
這是乙個正常的事務問題,就是開啟了乙個事務,事務裡有一組資料,然後執行,這裡的每一條指令都是放到乙個佇列裡的,當執行的時候,會逐條執行。
下面演示乙個取消事務的
127.0.0.1:6379> multi
ok127.0.0.1:6379> set money 100
queued
127.0.0.1:6379> get money
queued
127.0.0.1:6379> discard
ok
這個也是正常的取消了
如果在我們執行事務的時候,出現了語法錯誤,那麼整個事務都不會被執行了
127.0.0.1:6379> multi
ok127.0.0.1:6379> set money 100
queued
127.0.0.1:6379> sett age 20
(error) err unknown command `sett`, with args beginning with: `age`, `20`,
127.0.0.1:6379> get money
queued
127.0.0.1:6379> exec
(error) execabort transaction discarded because of previous errors.
可以看出,當出現語法錯誤的時候,整個事務都不會被執行,還有一種錯誤,不是語法錯誤,而是執行時錯誤。
127.0.0.1:6379> multi
ok127.0.0.1:6379> set name "hzy"
queued
127.0.0.1:6379> incr name
queued
127.0.0.1:6379> get name
queued
127.0.0.1:6379> exec
1) ok
2) (error) err value is not an integer or out of range
3) "hzy"
我們讓乙個字串自增,出現了錯誤,但是事務的其他語句還是正常執行了(這應該就是別人說的redis是半支援事務吧)。
還有一種情況就是,當我們執行事務的時候,還未執行exec,然後有其他客戶端來干擾了。
127.0.0.1:6379> multi
ok127.0.0.1:6379> set money 100
queued
127.0.0.1:6379> incr money
queued
127.0.0.1:6379> exec
1) ok
2) (integer) 101
如果在執行exec之前,另乙個客戶端執行了如下操作
127.0.0.1:6379> set money 500
ok
然後客戶端1再執行exec,我們get一下
127.0.0.1:6379> get money
"101"
可以看出,這是事務執行完的結果,而那個500就沒有成功,為了解決這一問題,出現了鎖,用watch監視,也就是我們的樂觀鎖。
127.0.0.1:6379> watch money
ok127.0.0.1:6379> multi
ok127.0.0.1:6379> set money 100
queued
127.0.0.1:6379> incr money
queued
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get money
"500"
這裡我們對money進行了監視,在執行exec之前我們在客戶端2執行如下
127.0.0.1:6379> set money 500
ok
然後再執行exec,由於對money進行了watch監視,所以就返回了nil。當我們再get money的時候,此時就是剛剛設定的500了,而事務相當於沒有執行。
這裡需要注意,當我們執行了exec、discard或unwatch的時候,都會自動的取消監視。
學了這麼久UI,你還不知道UI設計介面包含哪些?
那麼下面將會給大家介紹幾種最常見 最流行的移動端ui設計介面,並展示他們不同的設計特點,學以致用,開啟創意思維。常見的幾種ui設計介面 啟動頁 為了確保啟動頁在各個不同解析度的螢幕上適配良好,ui視覺設計師們常常會把它們放在螢幕的中間位置或者底部位置。首頁和選單欄介面 首頁的設計取決於產品的型別,它...
學習了這麼久遊戲建模,還不知道這些小精髓!
第一 學建模你得明白自己要的是什麼。成為乙個建模愛好者,需要具備什麼?熱情 時間 自制力 心態。這行沒你想的月入過萬,事實上和你說建模畢業月入過萬的都是耍流氓。建模行業,三個月到6個月轉正。工資可能會有5 6k。工資經驗兩年左右的,才可以到10k,還得看公司,普通小公司工資通常是開到8000左右。第...
小白上班這麼久遇到的一些坑
解決方法 每次都上調50px,就行。controls controls hidden hidden autoplay autoplay loop loop id play source src img yinyues everything.function audioautoplay id fals...