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數據庫

[root@datahubdb1 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])


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章