1. 程式人生 > >Redis大總結之二:Redis 事務,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]> set k1 1

QUEUED

127.0.0.1:6379[5]> set k2 2

QUEUED

127.0.0.1:6379[5]> exec

1) OK

2) OK

127.0.0.1:6379[5]> get k1

"1"

127.0.0.1:6379[5]> get k2

"2"

錯誤處理

Ø  語法錯誤:執行命令不存在或引數不對,都是語法錯誤,只有事務中有一處錯誤,redis執行exec命令後,會直接返回錯誤,正確的命令也不會被執行。

127.0.0.1:6379[5]> multi

OK

127.0.0.1:6379[5]> set name zhangsan

QUEUED

127.0.0.1:6379[5]> sss age 10

(error) ERR unknown command 'sss'

127.0.0.1:6379[5]> set sex nan

QUEUED

127.0.0.1:6379[5]> exec

(error) EXECABORT Transaction discarded because of previous errors.

127.0.0.1:6379[5]> get name

(nil)

127.0.0.1:6379[5]> get sex

(nil)

Ø  執行錯誤:此類錯誤執行命令沒錯,但是操作對應的鍵有誤,會造成執行時才會發現的錯誤,但是不影響其它正確命令的執行。

127.0.0.1:6379[5]> multi

OK

127.0.0.1:6379[5]> set k 10

QUEUED

127.0.0.1:6379[5]>sadd k 20//使用雜湊集合的命令操作strings型別資料

QUEUED

127.0.0.1:6379[5]> set k 100

QUEUED

127.0.0.1:6379[5]> exec

1) OK

2) (error) WRONGTYPE Operation against a key holding the wrong kind of value

3) OK

127.0.0.1:6379[5]> get k

"100"

WATCH命令

監控指定鍵,若被監控的鍵在以下事務執行前被修改,則包含對此鍵有操作動作的事務不執行,返回nil。

127.0.0.1:6379[5]> get k

"20"

127.0.0.1:6379[5]> set k 30

OK

127.0.0.1:6379[5]>watch k

OK

127.0.0.1:6379[5]> set k 40

OK

127.0.0.1:6379[5]> multi

OK

127.0.0.1:6379[5]> set k 50

QUEUED

127.0.0.1:6379[5]> exec

(nil)

127.0.0.1:6379[5]> get k

"40"

生存時間

Ø  EXPIRE操作:設定一個鍵的生存時間,單位是秒,到時間後redis會自動刪除它。

127.0.0.1:6379[5]> set name zhangsan

OK

127.0.0.1:6379[5]>expire name 10//生存時間為10s

(integer) 1

127.0.0.1:6379[5]> ttl name

(integer) 6

127.0.0.1:6379[5]> ttl name//TTL命令可以檢視剩餘的生存時間,剩餘秒數

(integer) 2

127.0.0.1:6379[5]> ttl name

(integer) -2

127.0.0.1:6379[5]> get name

(nil)//name鍵已被redis刪除

Ø  PERSIST操作:撤銷鍵的生存時間,恢復為永久的鍵。   

OK

127.0.0.1:6379[5]> set name lisi

OK

127.0.0.1:6379[5]> expire name 10

(integer) 1

127.0.0.1:6379[5]>persist name

(integer) 1

127.0.0.1:6379[5]> ttl name

(integer) -1

127.0.0.1:6379[5]> get name

"lisi"

Ø  PEXPIRE操作:設定一個鍵的生存時間,單位是毫秒,到時間後redis會自動刪除它。

127.0.0.1:6379[5]> pexpire name 10000

(integer) 1

127.0.0.1:6379[5]> pttl name  // PTTL命令可以檢視剩餘的生存時間,剩餘毫秒數

(integer) 7139

127.0.0.1:6379[5]> pttl name

(integer) 2760

127.0.0.1:6379[5]> pttl name

(integer) -2

更多:


 ----------------------------完----------------------------------