日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis学习笔记五:独立功能之事务

發(fā)布時間:2024/10/12 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis学习笔记五:独立功能之事务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Redis 事務提供了一種將多個命令請求打包,然后一次性、按順序地執(zhí)行多個命令的機制,并且在事務執(zhí)行期間,服務器不會中斷,會將事務中的所以命令都執(zhí)行完畢才去處理其他客戶端的命令請求。

事務的實現(xiàn)

事務開始

MULTI 命令意味著事務的開始。
事務從開始到結(jié)束包含三個階段:事務開始、命令入隊、事務執(zhí)行。

127.0.0.1:6379> multi OK

multi 命令將執(zhí)行命令的客戶端從非事務切換到事務狀態(tài),這一切換是通過在客戶端狀態(tài)的 flags 屬性中打開 REDIS_MULTI 標識完成的。返回客戶端 OK。

命令入隊

在事務狀態(tài)中,服務器會立刻執(zhí)行 exec、discard、watch、multi 四個命令中的一個,而非這些命令將會放入事務事務隊列,然后返回 QUEUED。

事務隊列
每個 Redis 客戶端都有自己的事務狀態(tài),這個事務狀態(tài)保存在客戶端狀態(tài)的 mstate 屬性里:

typedef struct redisClient { // ...multiState mstate; /* MULTI/EXEC state */ // ... }typedef struct multiState {multiCmd *commands; /* Array of MULTI commands */int count; /* Total number of MULTI commands */int minreplicas; /* MINREPLICAS for synchronous replication */time_t minreplicas_timeout; /* MINREPLICAS timeout as unixtime. */ } multiState;/* Client MULTI/EXEC state */ typedef struct multiCmd {robj **argv;int argc;struct redisComm,and *cmd; } multiCmd;

執(zhí)行事務
當一個處于事務狀態(tài)的客戶端向服務器發(fā)送 exec 命令時,這個 exec 命令將立刻被服務器執(zhí)行,遍歷事務隊列執(zhí)行所有命令,最后將執(zhí)行命令所得的結(jié)果全部返回給客戶端。

watch 命令的實現(xiàn)

watch 命令是個樂觀鎖,它可以在 exec 命令執(zhí)行前,監(jiān)視任意數(shù)量的數(shù)據(jù)庫鍵。當發(fā)現(xiàn)有修改則拒絕事務執(zhí)行并向客戶端返回代表事務執(zhí)行失敗的空回復。

使用 watch 命令監(jiān)視數(shù)據(jù)庫鍵
每個 Redis 數(shù)據(jù)庫都保存著一個 watched_keys 字典,鍵是被 watch 命令監(jiān)視的數(shù)據(jù)庫鍵,字典值是所有監(jiān)視這個鍵的客戶端鏈表。

監(jiān)視機制的觸發(fā)
所有對于數(shù)據(jù)庫進行修改的命令執(zhí)行后都會調(diào)用 multi.c/touchWatchKey 函數(shù)對 watched_keys 字典進行檢查,如果有客戶端正在監(jiān)視剛剛被命令修改過的數(shù)據(jù)庫鍵,touchWatchKey 函數(shù)會將監(jiān)視被修改鍵的客戶端的 REDIS_DIRTY_CAS 標識打開,表示客戶端的事務安全性被破壞。

判斷事務是否安全
當服務器收到客戶端發(fā)來的 exec 命令時,服務器會根據(jù)這個客戶端是否打開了 REDIS_DIRTY_CAS 標識來決定是否執(zhí)行事務。

事務的 ACID 性質(zhì)

A:Atomicity,原子性;
C:Consistency,一致性;
I:Isolation,隔離性;
D:Durability,耐久性。

原子性
原子性是指將事務中的多個操作作為一個整體來執(zhí)行,要么全部執(zhí)行成功,要么一個都不執(zhí)行。Redis 不支持事務回滾機制,即使事務隊列中的某個命令在執(zhí)行期間出現(xiàn)了錯誤,整個事務也會繼續(xù)執(zhí)行下去,直到將事務隊列中的所有命令都執(zhí)行完畢為止。

一致性
如果數(shù)據(jù)庫在執(zhí)行事務之前是一致的,那么在事務執(zhí)行之后無論事務是否執(zhí)行成功,數(shù)據(jù)庫應該是一致的。一致是指數(shù)據(jù)符合數(shù)據(jù)庫本身的定義和要求,沒有包含非法或者無效的錯誤數(shù)據(jù)。

隔離性
即使數(shù)據(jù)庫有多個事務并發(fā)地執(zhí)行,各個事務之間也不會互相影響,并發(fā)和串行狀態(tài)事務產(chǎn)生的結(jié)果完全相同。

耐久性
當一個事務執(zhí)行完畢時,執(zhí)行這個事務所得到的結(jié)果已經(jīng)被保存到永久存儲介質(zhì)里,即使事務執(zhí)行完畢后停機,執(zhí)行事務的結(jié)果也不會丟失。

轉(zhuǎn)載于:https://www.cnblogs.com/liushijie/p/5095297.html

總結(jié)

以上是生活随笔為你收集整理的Redis学习笔记五:独立功能之事务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂а√在线中文在线新版 | 久久精品国产免费看久久精品 | 欧美成人久久久免费播放 | 欧美无玛 | 九草在线视频 | 黄色在线a | 黑人巨大精品欧美黑寡妇 | 老版k8经典电影 | 偷偷操99| 已满18岁免费观看电视连续剧 | 日本黄色片免费看 | 艳妇乳肉亭妇荡乳av | 在线成人播放 | 蜜桃成人av| 蜜臀久久精品久久久久久酒店 | 这里只有精品6 | 午夜影剧院| 免费黄色网址观看 | 亚洲精品一卡 | 都市激情 亚洲 | 台湾黄色网址 | 国产精品视频专区 | 国产欧美日韩在线观看 | 蜜臀aⅴ免费一区二区 | 欧美性受xxxx白人性爽 | 黄色小说在线免费观看 | 欧美精品一区二区蜜桃 | 国产精品网站在线观看 | 日韩高清av | 国产又黄又爽 | 五月婷婷影院 | 老牛影视少妇在线观看 | 操操操影院 | 91免费在线视频 | 在线观看视频国产 | 青青青免费在线视频 | 无遮挡在线| 姑娘第5集高清在线观看 | 亚洲手机看片 | 欧美精品v| 射一射 | 五月天色综合 | 91视频 - 88av| 亚洲好骚综合 | 欧洲女性下面有没有毛发 | 激情第一页 | 黄色一级片久久 | 日产精品久久久久 | 精品在线播放 | 日韩欧美视频一区 | 亚洲香蕉在线观看 | 欧美伦理一区 | 日韩 国产 欧美 | 一区二区三区视频播放 | 无码aⅴ精品一区二区三区 精品久久在线 | 色视频在线观看免费 | 免费看裸体网站 | 影音先锋在线中文字幕 | 91玉足脚交嫩脚丫在线播放 | 国产+高潮+白浆+无码 | 亚洲欧美一区二区三区 | 欧美日韩成人在线播放 | 人人爽视频 | 欧美1级片 | 靠逼动漫 | 色婷婷激情综合 | 美日韩av在线 | 欧美日本韩国一区二区 | 男人在线视频 | 高清久久久| 国产婷婷一区二区 | 少妇精品视频一区二区 | 奇米影视在线观看 | 亚洲国产精品午夜久久久 | 夜夜嗨影院| 九九九九国产 | 办公室大战高跟丝袜秘书经理ol | 亚洲伦理一区 | 亚洲成人高清在线 | 综合激情伊人 | 国产乱淫av免费 | 97综合视频 | 人妻熟女aⅴ一区二区三区汇编 | 亚洲韩国精品 | 99精品国产99久久久久久97 | 荡女精品导航 | 天堂va蜜桃一区 | 黄色工厂这里只有精品 | 91丨九色丨蝌蚪丨老版 | 成年人晚上看的视频 | 视频福利一区 | 欧美三极片 | 视频在线免费观看 | 欧美一区二 | 毛片基地视频 | 欧美日韩999 | 国语对白一区二区三区 | 久久国产情侣 | 亚洲精品在线视频观看 |