1. 程式人生 > >redis 學習手冊之事務 transaction 操作

redis 學習手冊之事務 transaction 操作

事務操作

概述

Redis事務讓一組命令在單個步驟中執行。

事務中有兩個屬性,這說明如下:

在一個事務中所有命令按順序執行,作為一個單一獨立的操作。

Redis事務也是原子的。原子就意味著要麼所有命令都執行,要麼都不進行處理。

但是Redis的Transactions提供的並不是嚴格的ACID的事務,在執行中伺服器宕機,那麼會有一部分命令執行了,剩下的沒執行)

Redis還提供了一個Watch功能,你可以對一個key進行Watch,然後再執行Transactions,在這過程中,如果這個Watched的值進行了修改,那麼這個Transactions會發現並拒絕執行。這個功能可以防止別人修改的資料被覆蓋。

命令

命令原型

時間

命令描述

返回值

MULTI

O(1)

開啟事務
其他操作命令返回QUEUED
若語法失敗,直接返回失敗命令

返回OK,其他值為失敗資訊

EXEC

O(1)

提交事務

返回OK

例項

#A客戶端連結redis資料庫

[[email protected] bin]# ./redis-cli -a daphne

127.0.0.1:6379>

#開始事務

127.0.0.1:6379> multi

OK

#新增執行命令

127.0.0.1:6379> set transaction1testtransaction

QUEUED

127.0.0.1:6379> get transaction1

QUEUED

127.0.0.1:6379> incr iindex

QUEUED

#提交事務

127.0.0.1:6379> exec

1) OK

2) "testtransaction"

3) (integer) 1

127.0.0.1:6379>

127.0.0.1:6379> multi

OK

127.0.0.1:6379> del transaction1

QUEUED

127.0.0.1:6379> get transaction1

QUEUED

#新增失敗的語法

127.0.0.1:6379> get1 transaction1

(error) ERR unknown command 'get1'

127.0.0.1:6379> exec

#提交事務失敗,說明keytransaction1 已經不存在了,不能get

(error) EXECABORT Transaction discardedbecause of previous errors.

127.0.0.1:6379>

您覺的有所收穫,請保持持續的關注。
您發現部落格中有的紕漏,請指正。
您有更好的建議或更好的實現方式,請賜教。([email protected])