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

來源:互聯網
上載者:User
事務

Ø  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


更多:

Redis大總結之一:Redis 五大資料類型及操作

Redis大總結之三:SORT命令(對 列表|集合|有序集合 進行排序)
Redis大總結之四:任務隊列 | 發布/訂閱模式

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.