Redis事務與管道

Redis事務
在這里插入圖片描述
可以一次執行多個命令,本質是一組命令的集合。一個事務中的所有命令都會序列化,按順序地串行執行而不會被其他命令插入,不許加塞。
一個隊列中,一次性、順序性、排他性的執行一系列命令。

Redis事務VS數據庫事務
在這里插入圖片描述
常用命令
在這里插入圖片描述
情況1:正常執行
MULTI 與 EXEC
在這里插入圖片描述
multi執行后開啟事務,把后續的每條執行命令放在隊列QUEUE中,當輸入exec執行命令后,隊列中的相關指令才開始執行。

情況2:放棄事務
MULTI與DISCARD
在這里插入圖片描述
情況3:全體連坐
在這里插入圖片描述
在這里插入圖片描述
在往隊列中添加命令時,某個命令是錯誤的命令,語法編譯錯誤,那么執行exec的操作會報出異常,無法繼續完成隊列中的命令。
在這里插入圖片描述
情況4:冤頭債主
這種是命令執行異常,不是命令編譯異常
在這里插入圖片描述
Redis不能提供事務的回滾功能,開發者必須在事務執行出錯以后,自行恢復數據庫的狀態。
在這里插入圖片描述
特別注意與傳統數據庫事務的區別,不一定要么一起成功,要么一起失敗。
在這里插入圖片描述
在這里插入圖片描述
情況5: watch監控

Redis使用Watch來提供樂觀鎖定,類似于CAS(Check-and-Set)
悲觀鎖:顧名思義,就是很悲觀,每次去拿數據的時候都認為別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。
樂觀鎖:顧名思義,就是很樂觀,每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此次期間別人有沒有去更新這個數據。
樂觀鎖的策略:提交的版本必須大于記錄當前版本才能執行更新。
CAS
在這里插入圖片描述
watch操作
監控并順利的執行
在這里插入圖片描述

監控
在這里插入圖片描述
在 set balance 200的時候,另外一個事務執行了set balance 300
在這里插入圖片描述
由于balance的值被另外一個事務修改了,再次執行事務的提交exec操作,執行失敗。
在這里插入圖片描述unwatch 可以放棄對于key的監控操作
在這里插入圖片描述
redis事務小結

  1. 一旦執行了exec之前加的監控鎖都會被取消掉了。
  2. 當客戶端連接丟失的時候(如退出連接),所有的東西都會被取消監視。在這里插入圖片描述

Redis管道

如何優化頻繁的命令往返造成的性能瓶頸?
在這里插入圖片描述

在這里插入圖片描述
解決思路—管道
在這里插入圖片描述
Pipeline是為了解決RTT往返時,僅僅是將命令打包成一次性發送,對整個redis的執行不造成其他任何影響。批處理命令的變種優化方式,類似redis的原生批命令(mget與mset)
redis的管道執行,將命令打包到一個txt文件中,cat讀取結果集,同時執行后續的redis-cli的命令,批量執行txt文件中的命令。類似于SQL腳本的感覺
在這里插入圖片描述

在這里插入圖片描述
結果查詢
在這里插入圖片描述
管道與原生批量命令的對比

  • 原生批量命令是原子性的(mget mset),pipeline是非原子性的
  • 原生批量命令一次只能執行一種命令,pipeline支持批量執行不同命令
  • 原生批量命令是服務端實現,pipeline需要服務端與客戶端共同完成。

Pipeline與事務的對比

  • 事務具有原子性,管道不具有原子性
  • 管道一次性將多條命令發送到服務器,事務是一條一條的發,事務只有在接收到exec命令后才會執行,管道不會
  • 執行事務時阻塞其他命令的執行,而執行管道中的命令時不會

使用pipeline的注意點
在這里插入圖片描述
在這里插入圖片描述

官網地址

Redis 事務
Redis 管道

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

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

相關文章

掌握這些 UI 交互設計原則,提升產品易用性

在當今數字化時代,用戶對于產品的體驗要求越來越高,UI 交互設計成為決定產品成敗的關鍵因素之一。一個易用的產品能夠讓用戶輕松、高效地完成各種操作,而實現這一目標的核心在于遵循一系列科學合理的 UI 交互設計原則。本文將詳細闡述簡潔性、…

Alembic 實戰指南:快速入門到FastAPI 集成

一、快速開始 1.1 簡介 Alembic 是一個基于 SQLAlchemy 的數據庫遷移工具,主要用于管理數據庫模式(Schema)的變更,例如新增表、修改字段、刪除索引等,確保數據庫結構與應用程序的 ORM 模型保持一致。 Alembic 通過版…

LRU(最近最少使用)算法實現

核心思想與基本思路 LRU(Least Recently Used)算法是一種緩存淘汰策略,其核心思想是淘汰最近最少使用的數據。 最近使用原則:最近被訪問的數據在未來被訪問的概率更高,因此應保留在緩存中。淘汰機制:當緩…

現在有分段、句子數量可能不一致的中英文文本,如何用python實現中英文對照翻譯(即每行英文對應相應的中文)

以下是處理分段且中英文句子數量可能不一致的文本的Python實現方案,包含分句、翻譯和對齊功能: from googletrans import Translator import redef split_paragraphs(text):"""按空行分割段落并清洗"""return [p.strip()…

C語言每日一練——day_8

引言 針對初學者,每日練習幾個題,快速上手C語言。第八天。(連續更新中) 采用在線OJ的形式 什么是在線OJ? 在線判題系統(英語:Online Judge,縮寫OJ)是一種在編程競賽中用…

基礎知識《Redis解析》

Redis 詳細解析與介紹 Redis(Remote Dictionary Server)是一個開源的高性能鍵值對(Key-Value)數據庫,支持多種數據結構(如字符串、哈希、列表、集合等),廣泛應用于緩存、消息隊列、…

區跨鏈知識和概念

1、以太坊 Geth 源碼解析 Geth(Go Ethereum)是以太坊官方提供的 Go 語言實現的客戶端,廣泛用于以太坊全節點運行、挖礦、DApp 開發等。理解 Geth 的源碼有助于掌握以太坊區塊鏈底層邏輯,如區塊同步、EVM 執行、P2P 交互等。 2、…

Vue 計算屬性與 Data 屬性同名問題深度解析

文章目錄 1. 問題背景與核心概念1.1 Vue 響應式系統架構1.2 核心概念定義 2. 同名問題的技術分析2.1 同名場景示例2.2 問題發生機制 3. 底層原理剖析3.1 Vue 初始化流程3.2 響應式系統關鍵代碼 4. 問題解決方案4.1 最佳實踐建議4.2 錯誤處理機制 5. 性能影響分析5.1 遞歸調用性…

Mybatis——基礎操作、動態SQL

目錄 一.基礎操作 1.刪除 2.新增 3.更新 4.查詢 5.XML映射文件 二、動態SQL 1.<if> 2.<where> 3.<set> 4.<foreach> 5.<sql> 6.<include> 一.基礎操作 1.刪除 參數占位符&#xff1a; 注意&#xff1a; #{...}相比于${...}…

[設計模式]1_設計模式概覽

摘要&#xff1a;設計模式原則、設計模式的劃分與簡要概括&#xff0c;怎么使用重構獲得設計模式并改善代碼的壞味道。 本篇作概覽與檢索用&#xff0c;后續結合源碼進行具體模式深入學習。 目錄 1、設計模式原理 核心原則&#xff08;語言無關&#xff09; 本質原理圖 原…

C語言數據類型取值范圍及格式化符號

一、數據類型取值范圍與格式化輸出符號表格 數據類型大小&#xff08;字節&#xff09;取值范圍格式化輸出符號char1-128到127<br>或0到255&#xff08;如果聲明為unsigned char&#xff09;%c (字符)<br>%hhu (無符號)signed char1-1.2810到1.2710%hhd (有符號)u…

2024華東師范大學計算機復試上機真題

2024華東師范大學計算機復試機試真題 2023華東師范大學計算機復試機試真題 2022華東師范大學計算機復試機試真題 2024華東師范大學計算機復試上機真題 2023華東師范大學計算機復試上機真題 2022華東師范大學計算機復試上機真題 在線評測&#xff1a;傳動門&#xff1a;pgcode…

星越L_內后視鏡使用講解

目錄 1內后視鏡角度調節 2,防炫目功能

Spring Boot應用首次請求性能優化實戰:從數據庫連接池到JVM調優

目錄 問題現象與背景分析性能瓶頸定位方法論數據庫連接池深度優化Spring Bean生命周期調優JVM層性能預熱策略全鏈路監控體系建設生產環境驗證方案總結與擴展思考1. 問題現象與背景分析 1.1 典型問題場景 在某互聯網金融項目的Spring Boot應用上線后,運維團隊發現一個關鍵現象…

【深度解析:以“不要的心態”獲取所求的本質邏輯】

深度解析&#xff1a;以“不要的心態”獲取所求的本質邏輯 一、文化基因&#xff1a;禮讓傳統與權力合法性的雙重編碼 儒家倫理的深層滲透 孔子提出"禮之用&#xff0c;和為貴"&#xff0c;將"辭讓"納入"仁義禮智信"的道德體系。《禮記》明確記…

C++【類和對象】(結束篇)

C類和對象 1.static成員2.友元3.內部類4.匿名對象5.對象拷貝時的編譯器優化 1.static成員 用static修飾的成員變量叫做靜態成員變量&#xff0c;靜態成員一定要在類外進行初始化。靜態成員變量為所有類的共享&#xff0c;放入靜態區&#xff0c;不屬于某個具體對象&#xff0c…

每日一題---腐爛的蘋果(廣度優先搜索)

腐爛的蘋果 給定一個 nm nm 的網格&#xff0c;其中每個單元格中可能有三種值中的一個 0 , 1 , 2。 其中 0 表示這個格子為空、1 表示這個格子有一個完好的蘋果&#xff0c;2 表示這個格子有一個腐爛的蘋果。 腐爛的蘋果每分鐘會向上下左右四個方向的蘋果傳播一次病菌&…

maven筆記

maven介紹和作用 Maven 是一款為 Java 項目構建管理、依賴管理的工具&#xff08;軟件&#xff09;&#xff0c;使用 Maven 可以自動化構建、測試、打包和發布項目&#xff0c;大大提高了開發效率和質量。 主要作用的理解&#xff1a; 依賴管理&#xff1a; 在編寫項目時我…

模板-C++提高編程

C的一種編程思想稱為泛型編程&#xff0c;用到的技術就是模板 C提供兩種模板&#xff1a;函數模板和類模板。 1.函數模板 1.函數模板作用 建立一個通用函數&#xff0c;其返回值類型和形參類型可以用一個虛擬的類型來代替,提高代碼復用性&#xff0c;將類型參數化。 2.語法…

基于Asp.net的物流配送管理系統

作者&#xff1a;計算機學姐 開發技術&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源碼”。 專欄推薦&#xff1a;前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄&#xff1a;…