1. 程式人生 > >Redis的事務之watch使用

Redis的事務之watch使用

      斗轉星移,兜兜轉轉留下旅行的足跡。

      redis,在軟體行業可以是家喻戶曉的紅人,晚於memcached,青出於藍而勝於藍,可以用作快取還可以做資料庫。最近做的專案用到redis儲存一些互動的資料,從此對你更情有獨鍾。

      redis支援簡單的事務,redis的事物需要watch配合。

      一.事務

      說起事務這個名詞,相信大家不陌生。事務,從字面上可以清楚地理解,指的是要做的或所做的事情,是一個整體的概念。由前面的理解我們可以知道,要做的或所做的事情要不是做了要不是沒做,轉移焦距到本文說的事務,類似地要麼做完要麼不做,沒有做了一半的這樣可以保證整體的含義。

      事務,保證了原子性/一致性/隔離性/永久性。簡單地說,生活中的例子:張三需要向李四賬戶轉1000元錢,按照正常的情況來說,先從張三賬戶減1000元然後在李四賬戶加1000元。如果在轉賬的過程中出現意外的情況,比如說斷掉電等,把張三的錢減掉之後李四的賬戶並沒有加錢,這樣是不合理的,應該保持一致;從程式碼的角度來說:一個方法中的有delete/有insert,要保證這兩個方法要不都執行要不都不執行才是完整的。

     二.redis的事務

      知識之間是相通的,mysql中有事務,redis的事務跟它類似。只是,相對來說redis支援的事務比較簡單。說它簡單是因為在事務執行過程中如果不出現語法上的錯誤,事務中的一個操作執行失敗而另一個操作時可以執行成功的。

     三.redis事務之watch

     首先要了解redis事務中watch的作用,watch命令可以監控一個或多個鍵,一旦其中有一個鍵被修改(或刪除),之後的事務就不會執行。監控一直持續到exec命令(事務中的命令是在exec之後才執行的,所以在multi命令後可以修改watch監控的鍵值)。假設我們通過watch命令在事務執行之前監控了多個Keys,倘若在watch之後有任何Key的值發生了變化,exec命令執行的事務都將被放棄,同時返回Null multi-bulk應答以通知呼叫者事務執行失敗。

      所以,需要注意的是watch監控鍵之後,再去操作這些鍵,否則watch可能會起不到效果。

相關推薦

Redis大總結二:Redis 事務WATCH命令,生存時間

事務 Ø  MULTI,EXEC操作:事務的開始和結束標記 n 執行Multi命令,redis反饋ok表示開始事務;執行EXEC命令,結束事務,開始順序執行事務中的操作。 127.0.0.1:6379[5]> MULTI OK 127.0.0.1:6379[5]&g

Redis事務watch使用

      斗轉星移,兜兜轉轉留下旅行的足跡。       redis,在軟體行業可以是家喻戶曉的紅人,晚於memcached,青出於藍而勝於藍,可以用作快取還可以做資料庫。最近做的專案用到redis

redis事務watch

redis中文官網:redis事務[中文] redis的事務和watch redis是單執行緒的,所以在redis中所有命令都是原子操作。而當要多條redis命令同時執行而不被打斷時,則需要使用redis的事務了。 redis中的事務是用以下4個命令來實現的: - MULTI

Java開發Redis事務Watch原理分析

緬甸鉆石國際 開戶13378837779Redis中的業務(transaction)是一組指令的調集。業務同指令一樣都是Redis最小的履行單位,一個業務中的指令要麽都履行,要麽都不履行。Redis業務的完結需求用到 MULTI 和 EXEC兩個指令,業務開端的時分先向Redis服務器發送 MULTI 指

redis入門redis事務

pre multi 序列 客戶端 exec 原子操作 class logs 全部 Redis 事務可以一次執行多個命令,並且能夠帶有入選兩個保證: 事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打

Redis事務涉及的watch、multi等命令

原子 ger use ssi int atom val 之前 阻止 Redis Watch 命令 作用: 用於監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麽事務將被打斷。 用法: redis 127.0.0.1:6379>

二、redis系列事務

1. 緒言   Redis也提供了事務機制,可以一次執行多個命令,本質是一組命令的集合。一個事務中的所有命令都會序列化,按順序地序列化執行而不會被其他命令插入,不許加塞。但Redis對事務的支援是部分支援,不想關係型資料庫,要麼都成功要麼都失敗,Redis可以部分成功部分失敗。本篇中,我們來詳細所以說red

16-SpringBootRedis(三)——Redis事務機制

SpringBoot之Redis(三)——Redis事務機制 1. Redis 事務執行過程 2. 開啟事務支援 3. 測試 4. 測試結果說明 5. 原始碼下載 1. Redis 事務執行過程 Redis 事務執行過程

Redis-事務(multi,exec,watch,unwatch)

事務概述 Redis中的事務(transaction)是一組命令的集合。事務同命令一樣都是Redis的最小執行單位, 一個事務中的命令要麼都執行,要麼都不執行 。 事務的應用非常普遍,如銀行轉賬過程中A給B匯款,首先系統從A的賬戶中將錢划走,然後向B的賬戶增加相

nodejsredis事務封裝與使用

簡介 本文章主要針對nodejs中redis資料庫模組事務的封裝,此文章只涉及本人個人見解和使用習慣,如果你還有更好的方法,歡迎提出一起交流。 所需模組 目前redis模組是使用回撥函式的形式來接受返回的資料,這樣無疑會導致多種巢狀的使用,所以我們利用blue

redis 事務(MULTI 、 EXEC 、 DISCARD 和 WATCH

官方介紹MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事務相關的命令,事務可以一次執行多個命令,但是必須滿足2個條件: 事務是一個單獨的隔離操作:事務中的所有命令

Redis事務watch

redis的事務 嚴格意義來講, redis的事務和我們理解的傳統資料庫(如mysql)的事務是不一樣的。 redis中的事務定義 Redis中的事務(transaction)是一組命令的集合。 事務同命令一樣都是Redis的最小執行單位,一個事務中的命令要麼都執行,要麼都不執行。

redis事務中的WATCH

在Redis的事務中,WATCH命令可用於提供CAS(check-and-set)功能。假設我們通過WATCH命令在事務執行之前監控了多個Keys,倘若在WATCH之後有任何Key的值發生了變化,EXEC命令執行的事務都將被放棄,同時返回Null multi-bulk應答以通知呼叫者事務執行失敗。例如,我們

Redis-事務(multi,exec,watch,unwatch)

1.事務 1.1 概述 Redis中的事務(transaction)是一組命令的集合。事務同命令一樣都是Redis的最小執行單位, 一個事務中的命令要麼都執行,要麼都不執行 。 事務的應用非常普遍,如銀行轉賬過程中A給B匯款,首先系統從A的賬戶中將錢划走,然後向B的

高性能偽事務Lua in Redis

this 生成器 whole 是否 creat tex pad 不必要 ner EVAL簡介 Redis2.6加入了對Lua腳本的支持。Lua腳本可以被用來擴展Redis的功能,並提供更好的性能。 在《Redis拾遺》中曾經引用了《Redis in Action》中

跟我一起學RedisRedis事務簡單瞭解一下

### 前言 關係資料庫中的事務,小夥伴們應該是不陌生了,不管是在開發還是在面試過程中,總有兩個問題逃不掉: - 說說事務的特性; - 事務隔離級別是怎麼一回事? 事務處理不好,資料就可能不準確,最終就會導致業務出問題;藉此機會簡單回顧一下事務特性及其隔離級別,就當是複習了; #### 事務特性(AC

Redis Persistence redis database

database 子程序 rdb redis persistence 1、關於redis持久化問題,看看官網文檔: 註:redis提供了多種不同方式的持久化選項: RDB(即 redis database)持久化表現在特定的時間間隔內某一個時間點的快照。可以理解為,

redis持久化 aof日誌

bsp img png 常用 使用 app 日誌 back 現在 aof就是把執行的命令寫到文本文件裏面 aof使用過程 第一步: 修改配置文件,並啟動server 第二步, 當前目錄下面會生成一個 appendonly。aof文件,但是是空的     去

Redis事務

errors 隊列 存儲介質 val car 回滾 company 開發 中斷 Redis事務 Redis通過 MULTI 、 EXEC 、 WATCH 等命令來實現事務功能。事務提供了一種將多個命令請求打包,然後一次性、按順序地執行多個命令的機制,並且在事務執行期間,服務

angular$watch、$watchGroup、$watchCollection

user ng-model viewport call blog 問題 返回 默認 tail 1,原型:$watch: function(watchExp, listener, objectEquality, prettyPrintExpression){};