第九節 Redis 事務、Redis 腳本

Redis 事務可以一次執行多個命令, 并且帶有以下兩個重要的保證:

  • 事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。
  • 事務是一個原子操作:事務中的命令要么全部被執行,要么全部都不執行。

一個事務從開始到執行會經歷以下三個階段:

  • 開始事務。
  • 命令入隊。
  • 執行事務。

實例

以下是一個事務的例子, 它先以?MULTI?開始一個事務, 然后將多個命令入隊到事務中, 最后由?EXEC?命令觸發事務, 一并執行事務中的所有命令:

redis 127.0.0.1:6379> MULTI
OKredis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUEDredis 127.0.0.1:6379> GET book-name
QUEUEDredis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUEDredis 127.0.0.1:6379> SMEMBERS tag
QUEUEDredis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"2) "C++"3) "Programming"

Redis 事務命令

下表列出了 redis 事務的相關命令:

序號命令及描述
1DISCARD
取消事務,放棄執行事務塊內的所有命令。
2EXEC
執行所有事務塊內的命令。
3MULTI
標記一個事務塊的開始。
4UNWATCH
取消 WATCH 命令對所有 key 的監視。
5WATCH key [key ...]
監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷。

Redis 腳本

Redis 腳本使用 Lua 解釋器來執行腳本。 Reids 2.6 版本通過內嵌支持 Lua 環境。執行腳本的常用命令為?EVAL

語法

Eval 命令的基本語法如下:

redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

實例

以下實例演示了 redis 腳本工作過程:

redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second1) "key1"
2) "key2"
3) "first"
4) "second"

Redis 腳本命令

下表列出了 redis 腳本常用命令:

序號命令及描述
1EVAL script numkeys key [key ...] arg [arg ...]
執行 Lua 腳本。
2EVALSHA sha1 numkeys key [key ...] arg [arg ...]
執行 Lua 腳本。
3SCRIPT EXISTS script [script ...]
查看指定的腳本是否已經被保存在緩存當中。
4SCRIPT FLUSH
從腳本緩存中移除所有腳本。
5SCRIPT KILL
殺死當前正在運行的 Lua 腳本。
6SCRIPT LOAD script
將腳本 script 添加到腳本緩存中,但并不立即執行這個腳本。

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

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

相關文章

托福閱讀37-2

托福閱讀37-2 1.reinforcement from reintroduction定位到倒數第二句,這里我沒看懂former和term,直接懵掉了,然后往后看。這句話其實省略了,補充完應該是The former is termed reintroduction and the latter is termed reinforce…

docker-compose一鍵部署Springboot+Vue前后端分離項目

1. 背景說明 后端使用JDK8,前端為普通Vue項目前端訪問后端接口,統一帶了前綴/api 2. 項目配置 2.1 后端 yml文件里配置統一訪問前綴/api2.2 前端 API路徑配置為相對路徑:說明:我這邊前后端應用都是部署在同一臺服務器上&#xff0…

Unity_數據持久化_XML基礎

Unity數據持久化 三、XML數據持久化 3.1 XML基礎概念 3.1.1 什么是XML XML(eXtensible Markup Language)**是一種可擴展的標記語言,用于存儲和傳輸數據。它具有以下特點: 結構化:數據以層次結構組織可讀性:…

大語言模型的解碼策略:貪婪解碼與波束搜索

在自然語言生成任務(如機器翻譯、文本摘要、圖像描述等)中,語言模型通常會輸出一個詞的概率分布,但模型本身并不會自動告訴你應該選哪些詞作為最終的輸出句子。因此,我們需要設計一個“解碼策略”來從這些概率中生成可…

智慧園區:中小企業的 “減壓閥” 與數字化招商革命

在當前的經濟環境下,中小企業的生存發展面臨著諸多挑戰,其中選址成本儼然成為了創業路上的 “第一道坎”。傳統招商模式中,信息不對稱的問題尤為突出,初創企業常常因此陷入選址失誤的困境。有的企業選在交通不便的地方&#xff0c…

從零開始配置pytorch環境

總結了一下幾篇熱門文章和自己的經驗,方便以后換設備配置環境 一、安裝Anaconda 這一步是為了不污染全局環境,很有必要。 直接清華源鏡像下載:Index of /anaconda/archive/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 根據自…

離線錄像文件視頻AI分析解決方案

前言 在安防領域,視頻的價值不言而喻,尤其是錄像文件的價值顯得更是尤為重要。在一個安防項目上視頻錄像一般存儲1個月、3個月甚至更長時間,這就形成了海量的離線錄像文件數據。傳統安防項目對錄像文件的處理還有一定的局限性: 事…

人工智能與金融:金融服務的重塑

1. AI 驅動金融變革:從 “標準化” 到 “智能化”1.1 傳統金融的痛點與 AI 的破局傳統金融行業長期面臨三大瓶頸:服務效率低下:銀行柜臺辦理一筆貸款需 3-5 個工作日,人工審核流程繁瑣,客戶等待時間長;風險…

Qwen大模型關鍵參數解析:緩存與滑動窗口

QwenLLM "use_cache": true Qwen "use_sliding_window": false 在大語言模型(如Qwen系列)的生成配置中,"use_cache": true 和 "use_sliding_window": false 是兩個與模型推理效率和長文本處理相關的重要參數,具體含義如下: 1. …

Flask 框架全面詳解

Flask 是一個輕量級的 Python Web 框架,以其簡潔、靈活和易擴展的特性廣受歡迎。接下來我將從多個維度詳細介紹 Flask 框架。 1. Flask 核心特性 微框架設計 輕量級:核心功能精簡,只包含基本組件可擴展:通過擴展添加所需功能無…

概率 多維隨機變量與分布

一、二維1、二維隨機變量及其分布假設E是隨機試驗,Ω是樣本空間,X、Y是Ω的兩個變量;(X,Y)就叫做二維隨機變量或二維隨機向量。X、Y來自同一個樣本空間。聯合分布函數 F(x,y)P(X≤x,Y≤y),即F(x,y)表示求(x,y)左下方的面積。 F(x,…

Spring AI MCP:解鎖大模型應用開發新姿勢

一、AI 浪潮下的新利器 ——Spring AI MCP 登場在當今數字化時代,人工智能(AI)無疑是最耀眼的技術明星,正以前所未有的速度滲透到各個領域,深刻改變著我們的生活和工作方式。從智能語音助手到圖像識別技術,…

ThinkPHP5x,struts2等框架靶場復現

ThinkphpThinkphp5x遠程命令執行及getshell首先我們先找一個環境,或者自己搭建一個環境fofa:body"ThinkPHP V5"搭建:vulhub/thinkphp/5-rcedocker-compose up -d然后去訪問我們的環境遠程命令執行/?sindex/think\app/invokefuncti…

Hyperliquid:揭秘高性能區塊鏈共識引擎HyperBFT

大家好,今天我們一起探討Hyperliquid這個高性能區塊鏈項目以及它背后的共識引擎。Hyperliquid能在擁擠的去中心化交易賽道(DEX)中脫穎而出,很大程度上要歸功于其高效的共識機制——HyperBFT。 為了徹底搞懂HyperBFT,我…

大模型開發框架LangChain之構建知識庫

1.前言 為了避免 llm正確的廢話和幻覺,知識庫可以說是現在開發 agent的必備了。同時,作為 rag中的 r,知識庫召回的成功率會極大的影響 llm的最終回復效果。一般,會把知識庫召回的內容作為背景知識給到 llm,并在 prompt…

NPM打包時,報reason: getaddrinfo ENOTFOUND registry.nlark.com

先說解決方法:將 package-lock.json 文件中的 registry.nlark.com 改為 registry.npmmirror.com現象:npm ERR! code ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! errno ENOTFOUND npm ERR! network request to https://registry.nlark.com/url-too…

python內置庫os與sys的區別是什么?分別能實現什么功能?

Python 的 os 和 sys 是兩個功能截然不同但都非常重要的內置庫,它們分別服務于不同的交互場景:前者專注于與操作系統交互,后者專注于與 Python 解釋器本身交互。以下是詳細解析: 一、os 庫:操作系統交互接口 os 庫&…

【云計算】云主機的親和性策略(一):快樂旅行團

《云主機的親和性策略》系列,共包含以下文章: 1?? 云主機的親和性策略(一):快樂旅行團2?? 云主機的親和性策略(二):集群節點組3?? 云主機的親和性策略(三&#xf…

USRP捕獲手機/路由器數據傳輸信號波形(下)

目錄: USRP捕獲手機/路由器數據傳輸信號波形(上) USRP捕獲手機/路由器數據傳輸信號波形(中) USRP捕獲手機/路由器數據傳輸信號波形(下) 四、路由器MIMO-OFDM系統 本文深入分析采集手機與路由…

位運算在權限授權中的應用及Vue3實踐

在現代前端應用中,權限管理是一個至關重要的功能模塊。隨著應用復雜度的提示功能,權限細粒度越來越精細,如何高效地管理和判斷權限成為前端開發的一大挑戰。位運算作為一種高效的運算方式,在權限管理領域有著獨特的優勢。本文將詳…