最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis中的事務操作案例分析

 更新時間:2019年07月10日 09:46:49   作者:webbc  
這篇文章主要介紹了redis中的事務操作案例,結合具體實例形式詳細分析了redis事務操作的概念、原理、使用技巧與相關注意事項,需要的朋友可以參考下

本文實例講述了redis中的事務操作。分享給大家供大家參考,具體如下:

redis與mysql的事務

Redis支持簡單的事務

簡單使用

講張三的100圓錢轉(zhuǎn)賬給lisi:

set zhangsan 800
set lisi 100
multi
decrby zhangsan 100
incrby lisi 100
exec

失敗的兩種情況

在mutil后面的語句中, 語句出錯可能有2種情況,還是以轉(zhuǎn)賬的情況來分析:

(1)語法就有問題

127.0.0.1:6379> multi
OK
127.0.0.1:6379> decrby zhang 100
QUEUED
127.0.0.1:6379> hasdfasdf
(error) ERR unknown command 'hasdfasdf'
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> mget zhang wang
1) "800"
2) "100"

這種,exec時,報錯, 所有語句得不到執(zhí)行,所以還是800和100圓

(2)語法本身沒錯,但適用對象有問題

127.0.0.1:6379> multi
OK
127.0.0.1:6379> decrby zhang 100
QUEUED
127.0.0.1:6379> sadd wang 1
QUEUED
127.0.0.1:6379> exec
1) (integer) 700
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> mget zhang wang
1) "700"
2) "100"

Exec之后,會執(zhí)行正確的語句,并跳過有不適當?shù)恼Z句,所以這里是一個700圓一個100圓了

案例

假設買票案例,當前只有1張票和100塊錢,如果我在買票的過程中,在我multi之后,和exec之前,票被別人買了—即ticket已經(jīng)變成0了,然后我們執(zhí)行exec的時候就會將票變?yōu)?1,這就不對了。

127.0.0.1:6379> set ticket 1
OK
127.0.0.1:6379> set money 100
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> decr ticket
QUEUED
127.0.0.1:6379> decrby money 10

QUEUED
127.0.0.1:6379> exec
1) (integer) -1
2) (integer) 90

使用watch來檢測票有沒有被買走

實用watch來檢測指定的key,負責監(jiān)測key沒有被改動。

127.0.0.1:6379> set ticket 1
OK
127.0.0.1:6379> set money 100
OK
127.0.0.1:6379> watch ticket
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> decr ticket
QUEUED
127.0.0.1:6379> decrby money 10
QUEUED
127.0.0.1:6379> exec
(nil)//返回nil,說明監(jiān)視的ticket已經(jīng)改變了,事務就取消了.
127.0.0.1:6379> mget ticket money
1) "0"
2) "100"

在執(zhí)行exec之前,票被買走了,ticket為0了,然后執(zhí)行exec后,發(fā)現(xiàn)ticket被動了,所以就不執(zhí)行事務了,事務被取消了。在執(zhí)行exec的時候返回nil。

watch相關用法

watch key1 key2 ... keyN

作用:監(jiān)聽key1 key2..keyN有沒有變化,如果有變, 則事務取消

unwatch

作用:取消所有watch監(jiān)聽

希望本文所述對大家Redis數(shù)據(jù)庫程序設計有所幫助。

相關文章

  • Redis 高可用與集群原理深度解析

    Redis 高可用與集群原理深度解析

    Redis高可用機制涵蓋主從復制、哨兵自動故障轉(zhuǎn)移及Cluster集群分片與高可用,依賴Gossip協(xié)議實現(xiàn)節(jié)點通信與狀態(tài)同步,源碼解析了故障轉(zhuǎn)移流程,為后續(xù)持久化內(nèi)容奠定基礎,本文給大家介紹Redis高可用與集群原理,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • Redis安裝啟動及常見數(shù)據(jù)類型

    Redis安裝啟動及常見數(shù)據(jù)類型

    這篇文章主要介紹了Redis安裝啟動及常見數(shù)據(jù)類型,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 詳解Redis Stream做消息隊列

    詳解Redis Stream做消息隊列

    這篇文章主要介紹了詳解Redis Stream做消息隊列,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • redis查詢keys報錯的實現(xiàn)

    redis查詢keys報錯的實現(xiàn)

    在Redis中使用KEYS命令來查詢所有符合特定模式的鍵名是一個常見需求,本文主要介紹了redis查詢keys報錯的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • redis 用scan指令 代替keys指令(詳解)

    redis 用scan指令 代替keys指令(詳解)

    下面小編就為大家分享一篇redis 用scan指令 代替keys指令詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Redis事務與數(shù)據(jù)持久化方式

    Redis事務與數(shù)據(jù)持久化方式

    該文檔主要介紹了Redis事務和持久化機制,事務通過將多個命令打包執(zhí)行,而持久化則通過快照(RDB)和追加式文件(AOF)兩種方式將內(nèi)存數(shù)據(jù)保存到磁盤,以防止數(shù)據(jù)丟失
    2025-01-01
  • redis實現(xiàn)共同好友的思路詳解

    redis實現(xiàn)共同好友的思路詳解

    微信朋友圈大家都玩過吧,那么朋友圈的點贊、評論只能看到自己好友的信息是怎么操作的呢?下面通過本文給大家分享下此功能的實現(xiàn)流程,對redis實現(xiàn)共同好友的方法感興趣的朋友一起看看吧
    2021-05-05
  • Redis客戶端連接機制的實現(xiàn)方案

    Redis客戶端連接機制的實現(xiàn)方案

    本文主要介紹了Redis客戶端連接機制的實現(xiàn)方案,包括事件驅(qū)動模型、非阻塞I/O處理、連接池應用及配置優(yōu)化,具有一定的參考價值,感興趣的可以了解一下
    2025-07-07
  • Redis 內(nèi)存碎片原因及清理

    Redis 內(nèi)存碎片原因及清理

    內(nèi)存碎片是指在內(nèi)存分配的時候,產(chǎn)生的不能重復利用的空間,本文主要介紹了Redis 內(nèi)存碎片原因及清理,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 如何使用redis中的zset實現(xiàn)滑動窗口限流

    如何使用redis中的zset實現(xiàn)滑動窗口限流

    滑動窗口限流是一種常見的流量控制方法,它限制了在一定時間窗口內(nèi)的請求數(shù)量,下面是使用Redis ZSet實現(xiàn)滑動窗口限流的一個簡單示例,需要的朋友可以參考下
    2023-09-09

最新評論

南木林县| 兴化市| 石楼县| 巍山| 敦化市| 彭山县| 尉氏县| 桂东县| 鄢陵县| 桦甸市| 吉林市| 靖边县| 始兴县| 宁武县| 福泉市| 溧阳市| 开远市| 舒城县| 志丹县| 宁化县| 嘉义县| 许昌市| 泽州县| 兴安县| 潼关县| 南开区| 普陀区| 中山市| 仁寿县| 阳春市| 郴州市| 高要市| 甘肃省| 罗平县| 宝丰县| 日照市| 元氏县| 玛沁县| 佛学| 吴忠市| 舟曲县|