Redis(十二):Redis事務的基本操作

1、Redis事務概念

Redis 事務的本質是一組命令的集合。事務支持一次執行多個命令,一個事務中所有命令都會被序列化。在事務執行過程,會按照順序串行化執行隊列中的命令,其他客戶端提交的命令請求不會插入到事務執行命令序列中。

總結說:redis事務就是一次性、順序性、排他性的執行一個隊列中的一系列命令。

  • Redis不保證原子性:Redis中,單條命令是原子性執行的,但事務不保證原子性,且沒有回滾。事務中任意命令執行失敗,其余的命令仍會被執行。
  • Redis事務沒有隔離級別的概念:批量操作在發送 EXEC
    命令前被放入隊列緩存,并不會被實際執行,也就不存在事務內的查詢要看到事務里的更新,事務外查詢不能看到。換句話說也就是所有命令在事務中,并沒有直接執行,而是要在執行命令發起后才會開始執行。

Redis事務的三個階段:

  1. 開啟事務(Multi)
  2. 命令入隊(…)
  3. 執行事務(Exec)

2、Redis事務基本操作命令

2.1、MULTI EXEC

127.0.0.1:6379> MULTI	//開啟事務
OK
127.0.0.1:6379> set ke1 y1
QUEUED
127.0.0.1:6379> set ke2 y2
QUEUED
127.0.0.1:6379> get ke2
QUEUED
127.0.0.1:6379> set ke3 y3
QUEUED
127.0.0.1:6379> Exec	//執行事務
1) OK
2) OK
3) "y2"
4) OK

2.2、Discard

127.0.0.1:6379> MULTI	//開啟事務
OK
127.0.0.1:6379> set ke1 y1
QUEUED
127.0.0.1:6379> set ke2 y2
QUEUED
127.0.0.1:6379> set ke3 y3
QUEUED
127.0.0.1:6379> Discard	//放棄事務,事務中的命令都不會執行
OK
127.0.0.1:6379> get ke1	
(nil)					//	因為放棄了事務查詢不到ke1

3、Redis事務的異常

3.1、編譯異常
命令有錯,事務中的命令都不會執行。

127.0.0.1:6379> set kk1 y1
QUEUED
127.0.0.1:6379> set kk2 y2
QUEUED
127.0.0.1:6379> get kk3 y3	//這是一個錯誤命令
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> get kk4 y4
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> set kk3 y3
QUEUED
127.0.0.1:6379> set kk4 y4
QUEUED
127.0.0.1:6379> Exec	//這里因為上面錯誤,進而整個事務列隊都無法執行
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get kk3	//因為事務執行錯誤,所以取不到kk3的值
(nil)

3.2、運行異常
事務隊列中存在邏輯性語法錯誤,其他命令是可以執行的,所以說Redis沒有原子性的說法。

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> INCR k1		//“v1”怎么加一?所以是錯的
QUEUED						//并不是命令錯誤,運行前Redis無法識別
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> get k2
QUEUED
127.0.0.1:6379> exec
1) OK
2) (error) ERR value is not an integer or out of range	//報錯了
3) OK	//其他的正常執行
4) "v2"

4、總結

總的來說redis事務就是一次性、順序性、排他性的執行一個隊列中的一系列命令。值得注意的是它的非原子性和沒有隔離級別的特性!!!

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

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

相關文章

大型網站HTTPS 實踐(一)| HTTPS 協議和原理

作者 | 百度HTTPS技術支持團隊 百度已經上線了全站 HTTPS 的安全搜索,默認會將 HTTP 請求跳轉成 HTTPS。本文就著重介紹了 HTTPS 協議涉及到的重要知識點和平時不太容易理解的盲區,希望能對大家理解 HTTPS 協議有幫助。百度 HTTPS 性能優化涉及到大量內容…

MongoDB(一):簡介

1、MongoDB概述 MongoDB 是由C語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 是一款流行的開源文檔型…

大型網站HTTPS實踐:HTTPS對性能的影響

作者 | 百度HTTPS技術支持團隊 百度已經上線了全站 HTTPS 的安全搜索,默認會將 HTTP 請求跳轉成 HTTPS。百度 HTTPS性能優化涉及到大量內容,從前端頁面、后端架構、協議特性、加密算法、流量調度、架構和運維、安全等方面都做了大量工作。本系列的文章將…

Redis(十三):Redis實現樂觀鎖

1、悲觀鎖與樂觀鎖 樂觀鎖和悲觀鎖是一種程序設計思想,而不是具體的代碼。樂觀鎖和悲觀鎖應用的場景有很多,在數據庫和多線程等等都會用到。 悲觀鎖:總是假設最壞的情況,每次去拿數據的時候都認為別人會修改,所以每次…

PWA將帶來新一輪大前端技術洗牌?

作者 | 彭星 編輯 | 尾尾 一、回顧歷史:移動時代之初,Web遭遇兩大枷鎖 Web 在移動時代遭遇兩大枷鎖1.Web 在移動時代遭遇兩大枷鎖 當 Web 自信滿滿,步入移動時代之時,它還沒有做好充足的準備。 回顧 2014 到 2015 年那段時間…

Redis(十四):Jedis

Jedis是Redis官方推薦的Java連接開發工具。要在Java開發中使用好Redis中間件&#xff0c;必須對Jedis熟悉才能寫成漂亮的代碼&#xff01; 1、新建Maven工程&#xff0c;導入對應依賴 <dependencies><dependency><groupId>redis.clients</groupId>&l…

高級精致智能快捷的Web設計原則案例

作者 | 百度搜索用戶體驗中心 《Web設計指南》分為設計原則、基礎規范兩方面主要內容&#xff0c;同時會提供相應的實際案例及資源下載。關注OpenWeb開發者&#xff0c;回復“設計指南”&#xff0c;即可獲取已發布資源。 設計原則之高級精致 簡潔并不等于粗糙沒有細節&#x…

Linux系列(一):簡介與目錄結構

1、Linux簡介 1.1、起源 Linux出現于1991年&#xff0c;是由芬蘭赫爾辛基大學學生Linus Torvalds和后來加入的眾多愛好者共同開發完成 1.2、Linux特點 多用戶&#xff0c;多任務&#xff0c;豐富的網絡功能&#xff0c;可靠的系統安全&#xff0c;良好的可移植性&#xff0c;…

日常問題——解決mac下 ssh: connect to host localhost port 22: Connection refused

問題描述&#xff1a; 今天使用ssh 登陸本地時即使用ssh localhost出現了 ssh: connect to host localhost port 22: Connection refused 錯誤&#xff01; 然后在網上看了很多的解決方案&#xff0c;也都是千篇一律&#xff0c;大多數是針對ssh安沒安裝的&#xff1f;那肯定是…

大型網站的HTTPS實踐:基于協議和配置的優化

作者 | 百度HTTPS技術支持團隊 百度已經上線了全站 HTTPS 的安全搜索&#xff0c;默認會將 HTTP 請求跳轉成 HTTPS。百度 HTTPS性能優化涉及到大量內容&#xff0c;在前端頁面、后端架構、協議特性、加密算法、流量調度、架構和運維、安全等方面都做了大量工作。本系列的文章將…

初識Hadoop:大數據與Hadoop概述

1、大數據概述 大數據&#xff08;big data&#xff09;&#xff0c;IT行業術語&#xff0c;是指無法在一定時間范圍內用常規軟件工具進行捕捉、管理和處理的數據集合&#xff0c;是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信…

W3C近期要聞:W3C戰略重點報告新版發布

作者 | W3C中國 「OpenWeb開發者」依托于BOW&#xff08;Brillant Open Web&#xff09;團隊&#xff0c;是一個專門的 Web 技術建設小組&#xff0c;致力于推動 OpenWeb 技術的發展&#xff0c;將不定期為讀者同步W3C要聞。 注&#xff1a;由于微信不支持外鏈&#xff0c;了解…

Hadoop的安裝及配置

PS:最新安裝教程請參考Hadoop的安裝與配置&#xff08;設置單節點群集&#xff09;詳細教程 1、Hadoop安裝前準備工作&#xff1a; 在開始Hadoop安裝與配置之前&#xff0c;需要準備的環境&#xff1a;Linux系統、配置JDK環境變量。 2、安裝 我們可以到Apache Hadoop的官網ht…

在 PWA 中使用 App Shell 模型提升性能和用戶感知體驗

作者&#xff5c;潘宇琪 編輯&#xff5c;Daisy 在構建 PWA 應用時&#xff0c;使用 App Shell 模型能夠在視覺和首屏加載速度方面帶來用戶體驗的提升。另外&#xff0c;在配合 Service Worker 離線緩存之后&#xff0c;用戶在后續訪問中將得到快速可靠的瀏覽體驗。 在實踐過…

【轉】超酷的 mip-infinitescroll 無限滾動(無限下拉)

寫在前面 無限滾動技術&#xff08;又叫做無限下拉技術&#xff09;被廣泛應用于新聞類&#xff0c;圖片預覽類網站。對用戶來講&#xff0c;使用無限滾動的頁面有源源不斷的信息可以預覽&#xff0c;增加用戶在頁面的停留時長。技術上原理也很簡單&#xff0c;在頁面加載時加…

日常問題——Mac下新建目錄報Read-only file system

問題描述&#xff1a; 今天在根目錄下&#xff0c;新建目錄時出現了Read-only file system提示為只讀的錯誤。電腦最近并沒有非正常關機之類可能導致文件損傷的操作&#xff0c;但是最近倒是進行了一次系統更新。 解決方案&#xff08;過程&#xff09;&#xff1a; 從系統更…

MongoDB(二):MongoDB的安裝

這里以OSX系統為例&#xff0c;window和linux可以參考https://www.runoob.com/mongodb/mongodb-linux-install.html 1、我們使用 curl 命令來下載安裝&#xff1a; # 進入 /usr/local cd /usr/local# 下載 sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_…

百度推出 MIP Baidu Path鏈接

在站長將站點 MIP 化時&#xff0c;需要關注 URL 的一共有三個&#xff1a;MIP URL, MIP-Cache URL 以及 MIP Baidu Path。 從 URL 說起 在互聯網中&#xff0c;URL 定義頁面的地址&#xff0c;每個 URL 對應一個頁面。而 MIP URL 則是 MIP 頁的原始地址&#xff0c;指向托管…

Postman接口測試(超詳細整理)

常用的接口測試工具主要有以下幾種 Postman&#xff1a;簡單方便的接口調試工具&#xff0c;便于分享和協作。具有接口調試&#xff0c;接口集管理&#xff0c;環境配置&#xff0c;參數化&#xff0c;斷言&#xff0c;批量執行&#xff0c;錄制接口&#xff0c;Mock Server, …

mip-link 組件功能升級說明

背景描述 某個頁面被多少頁面引用&#xff08;在其他頁面上有指向這個頁面的 a 標簽&#xff09;&#xff0c;是搜索引擎判斷這個頁面價值的其中一個因子。這里的搜索引擎不只是指百度&#xff0c;還包括國內外其他的搜索引擎。 MIP 在最初設計 MIP url 跳轉邏輯實現時&#…