redis運維(十七)事務

一??redis事務

事務核心參考

①? ?基礎概念

1、場景'引入'核心:通過現象'思考原因'?

2、'事務'的概念

3、事務'四大'特性說明: redis只'具備部分'特性

重點1: '原子性'和'一致性'

重點2: '隔離性'和'持久性'

②? ?redis的事務

1、'基礎'鋪墊備注: redis提供了'簡單的事務',不支持'事務回滾'

2、redis的'事務'命令核心點:1、在一個'客戶端'操作的時候,把'所有的指令'一次性按照'順序'放在一個'隊列'中2、執行完了之后再讓'其他的客戶端'操作

事務相關的命令

1、multi  -->  '開啟事務',標記一個'事務塊的開始'備注: 設定事務的'開啟 start'位置,此指令執行后,'后續的所有指令'均加入到'事務'中2、exec   -->  '執行事務'作用:設定事務的'結束 end'位置,同時執行事務,與multi '成對'出現,成對使用備注1:若在'事務隊列'中存在'命令性'錯誤,則'執行EXEC'命令時,所有命令'都不會'執行備注2:若在事務隊列中存在'語法性'錯誤,則執行EXEC命令時,其他正確命令會被執行,錯誤命令拋出異常也即:已經'執行完畢的命令'對應的數據'不會自動回滾',需要程序員'自己在代碼中'實現回滾3、discard作用: 終止'當前事務的定義',發生在'multi之后',exec之'前'場景: 你在命令入隊列的時候,發現你有些命令指令輸入錯誤,你不想執行了,這個時候,你不想提交事務了

備注:1、mysql的commit是'先執行'了,然后'又回滾'了2、而redis的'discard'是取消redis服務器'暫存隊列'的內容,'不執行'QUEUED : '隊列'

備注:1、雖然'將命令序列化后'發給redis服務器,但是redis'并沒有'執行2、而是放在一個'獨立的暫存區域[隊列中]'3、只有'客戶端'發送'EXEC'的命令,對于redis就是一個信號,redis服務器端'才會執行'.缺點:每次發送命令都會'進行一個I/O操作',在服務器進行'多個命令'打包

③? ?事務特殊情況

1、'語法 synax'錯誤

說明: '報錯時',所有的命令'都不會'執行,'完全回滾'命令'語法'錯誤: 一個事務中的'多個命令'都'不會'執行備注: '語法'錯誤,redis-cli客戶端會'進行校驗'

2、'類型操作'錯誤備注: 在'類型'執行時'報錯',這時一個事務中的'多個命令','對的會執行','錯的不會'執行

說明: redis只有'在服務器端執行'才知道'是否錯誤'常見: 1、incr email 'email'不是'整數'類型2、number 不是 'list'列表類型

④? 事務小結

⑤? 事務的工作流程

一個事務'從開始到結束'通常會進過以下'三個'階段:(1)事務開始 (2)命令入隊 (3)事務執行

百度二面:談談你對Redis事務的理解

⑥? watch

說明: watch 監控key備注: redis使用watch來提供'樂觀鎖',類似 'cas(check and set)'

樂觀鎖

樂觀鎖version和時間戳外的實現方式

樂觀鎖的version和timestamp

分布式鎖和消息隊列

思考: 樂觀鎖'樂觀在哪'?

redis 鎖和分布式鎖?

1、'不開啟'watch監控時,事務中的key被修改'不影響事務'的執行2、'開啟'watch監控時,'事務中的key被修改'影響'事務的執行'  --> '案例演示'

結果:1、由于在'redis-cli'中的 'key k1'被'watch'監控2、另一個redis客戶端'修改k1后',再'執行事務'修改k1,則整個事務中的所有命令'都不會'執行補充: unwatch '取消監控key'

⑦??并發競爭key

分布式鎖和消息隊列

核心點: 體會'設計'思路

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166244.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

runapi的學習記錄

安裝地址 git clone https://github.com/star7th/showdoc.git 默認賬號與密碼 showdoc 123456 首頁 訪問地址:http://192.168.51.2:4042/web/#/ 進入ShowDoc首頁 登錄showdoc文檔系統 http://192.168.51.2:4042/web/#/user/login 默認賬號密碼showdoc/12345…

unity Terrain 性能問題

在實踐過程中unity發生進入場景GPU爆顯存的情況,經過調查發現是使用Terrain造成的問題,這個問題在使用一個Terrain的時候并不會發生,但是在使用多個時會發生。 似乎在使用過程中Terrain會直接把Terrain的整個地圖加載,造成移動設…

? 一文帶你了解多文件混淆加密

?🔒 一文帶你了解多文件混淆加密 目錄 🔒 一文帶你了解 JavaScript 多文件混淆加密 ipaguard加密前 ipaguard加密后 ? 🔒 一文帶你了解 JavaScript 多文件混淆加密 JavaScript 代碼多文件混淆加密可以有效保護源代碼不被他人輕易盜取。…

關閉vscode打開的本地服務器端口

vscode開了本地的一個端口“8443”當本地服務器端口,然后隨手把VScode一關,后來繼續做發現8443端口已經被占用了。 ??原來,即便關閉了編譯器VScode,服務器依然是被node.exe運行著的。那這個端口怎么才能關掉呢? ??…

Kotlin基礎——Lambda和函數式編程

Lambda 使用 { } 定義Lamba,調用run運行 run { println(1) }更常用的為 { 參數 -> 操作 },還可以存儲到變量中,把變量作為普通函數對待 val sum { x: Int, y: Int -> x y } println(sum(1, 2))maxBy()接收一個Lambda,傳…

EXIT外部中斷 HAL庫+cubeMX

一.cubeMX外部中斷配置 1.系統內核 2.中斷管理 3.選擇搶占優先級和響應優先級,共有5個等級,在這里就使用庫函數編寫代碼時最常用的2位搶占優先級2位響應優先級。 4.勾選使能選項,后面的兩個零,第一個代表搶占優先級的等級&#xf…

用于計算機屏幕安全攝像頭系統:Screen Anytime Crack

Screen Anytime 是一款軟件,旨在自動將整個用戶會話或 PC/服務器/VM/Kiosk 的 /RDP/Citrix/RemoteApp 會話的屏幕活動記錄到視頻日志文件中,以用于記錄、審核和監控目的。通過重播其高度壓縮的視頻,您可以輕松回顧單臺計算機或一組服務器/PC …

基于C#實現并查集

一、場景 有時候我們會遇到這樣的場景,比如:M{1,4,6,8},N{2,4,5,7},我的需求就是判斷{1,2}是否屬于同一個集合,當然實現方法有很多,一般情況下,普通青年會做出 O(MN)的復雜度,那么有沒有更輕量級的復雜度呢…

Vatee萬騰科技的獨特力量:Vatee數字時代創新的新視野

在數字化時代的浪潮中,Vatee萬騰科技以其獨特而強大的創新力量,為整個行業描繪了一幅嶄新的視野。這不僅是一場科技創新的冒險,更是對未來數字時代發展方向的領先探索。 Vatee萬騰將創新視為數字時代發展的引擎,成為推動行業向前的…

ubuntu 安裝python3.13

列出 /usr/bin/ 目錄下所有以 python 開頭的文件和目錄 ls /usr/bin/python* 添加Python軟件源。您可以通過以下命令將Python的軟件源添加到您的系統中 sudo add-apt-repository ppa:deadsnakes/ppa 然后運行以下命令以更新軟件包列表: sudo apt-get update 安…

vue每個階段的生命周期做了什么

Vue 實例的生命周期可以分為創建階段、掛載階段、更新階段和銷毀階段。下面是每個階段具體干了什么的說明和對應的代碼示例: 創建階段 beforeCreate: 此階段在實例初始化之后,數據觀測 (data observer) 和 event/watcher 事件配置之前被調用…

Spring AOP 底層原理

Spring AOP 底層原理 aop 底層是采用動態代理機制實現的:接口實現類 (1)如果要代理的對象,實現了某個接口,那么 Spring AOP 會使用 JDK Proxy,去創建代理對象。 (2)沒有實現接口的對…

下一代ETL工具:微服務架構的全新數據集成平臺

當前對于大型企業來說數據的整合和加工變得越來越重要。隨著業務需求的不斷增長,企業數據量越來越大,數據管道越來越多,現有的ETL(抽取、轉換、加載)工具已不再滿足實時、高性能和微服務架構等現代化需求。因此&#x…

基于C#實現Prim算法

圖論在數據結構中是非常有趣而復雜的,作為 Web 碼農的我,在實際開發中一直沒有找到它的使用場景,不像樹那樣的頻繁使用,不過還是準備仔細的把圖論全部過一遍。 一、最小生成樹 圖中有一個好玩的東西叫做生成樹,就是用…

前端項目搭建Webpack的配置

本人這次是在搭建一個Typescript項目時候配置的Webpack。但是Typescript的項目本人看來和往常的Web(Vue)項目類似點很多的。那么我們就可以通過對該Typescript項目的略微調整即可挪到Web項目中....... 首先說明一下為什么要依賴WebPack來搭建項目??&…

ES 萬條以外分頁檢索功能實現及注意事項

背景 以 ES 存儲日志,且需要對日志進行分頁檢索,當數據量過大時,就面臨 ES 萬條以外的數據檢索問題,如何利用滾動檢索實現這個需求呢?本文介紹 ES 分頁檢索萬條以外的數據實現方法及注意事項。 需求分析 用 ES 存儲數…

Redis 反序列化失敗

文章目錄 問題原序列化配置修改配置解決方法 問題 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of org.springframework.security.core.authority.SimpleGrantedAuthority (although at least one Creator exists): cannot deser…

css圖片縮放屬性object-fit說明

object-fit 屬性可以設置以下值: 屬性值說明例子fill填充容器,可能會改變圖片的比例。object-fit: fill;contain保持圖片的原始比例,確保圖片完全包含在容器內。object-fit: contain;cover保持圖片的原始比例,確保圖片覆蓋整個容…

性能優化中使用Profiler進行頁面卡頓的排查及解決方式

文章目錄 一、前言二、頁面卡頓的排查方式1、耗時操作的監控2、頁面卡頓的監控 三、參考鏈接 一、前言 程序的優化在做過線上bug處理,布局層級優化,項目依賴庫版本更新,重復庫合并,刪除未使用的資源,刪除冗余的庫&…

機器學習【01】相關環境的安裝

學習實例 參考資料:聯邦學習實戰{楊強}https://book.douban.com/subject/35436587/ 項目地址:https://github.com/FederatedAI/Practicing-Federated-Learning/tree/main/chapter03_Python_image_classification 一、環境準備 GPU安裝CUDA、cuDNN pytho…