日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Redis 高级特性(1)—— 事务 过期时间 排序

發布時間:2023/11/28 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 高级特性(1)—— 事务 过期时间 排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Redis 高級特性 —— 事務

事務概念

Redis 中的事務 (transaction)是一組命令的集合。事務同命令一樣是 Redis 的最小執行單位,一個事務中的命令要么都執行,要么都不執行。
事務的原理是先將屬于一個事務的命令發送給 Redis,然后再讓 Redis 依次執行這些命令。

事務命令

命令說明
watch key[key…]鎖定key,直到執行了multi/exec命令
multi標記一個事務塊開始
exec執行所有multi之后發的命令
discard丟棄所有multi之后發的命令

事務使用

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a 1
QUEUED
127.0.0.1:6379> set b 2
QUEUED
127.0.0.1:6379> set c 3
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) OK
127.0.0.1:6379> 

multi 標記一個事務的開始,表示之后發送的命令都屬于同一個事務,而 exec 命令則告訴 Redis 將等待執行的事務隊列中的所有命令(即剛才返回 QUEUED 的命令)按照發送順序依次執行。exec 命令的返回值是事務命令的返回值組成的列表,返回值順序和命令的順序相同。

Redis 會保證一個事務中的命令要么都執行,要么都不執行。如果在執行 exec 命令之前客戶端斷線了那么 Redis 會自動清空事務隊列,事務中的所有命令都不會執行;而如果客戶端執行了 exec 命令后斷線也沒有關系,Redis 已經記錄了所有要執行的命令。

錯誤處理

如果 Redis 事務中一個命令發生錯誤,那么其它的命令還會執行嗎?我們主要看兩種錯誤:

  • 語法錯誤

    只要事務中有一個命令的語法發生錯誤,那么整個事務中的命令都不會執行。

  • 運行錯誤

    運行錯誤是指在執行命令時出現的錯誤,這種錯誤在實際執行之前是無法發現的,當事務中出現這種運行錯誤時,其它命令仍然會繼續執行的。

Redis 事務不支持關系型數據庫事務提供的回滾功能。

watch 命令

watch 命令可以監控一個或者多個鍵,一旦其中有一個鍵被修改或刪除,之后的事務就不會執行。監控一直持續到 exec 命令 (事務中的命令是在 exec 命令之后執行的,所以在 multi 命令之后可以修改 watch 監控的鍵值)

127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> watch a
OK
127.0.0.1:6379> set a 2
OK
127.0.0.1:6379> multi 
OK
127.0.0.1:6379> set a 3
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get a
"2"
127.0.0.1:6379> 

2. Redis 高級特性 —— 過期時間

Redis 使用 expire 命令設置一個鍵的過期時間,到時間后 Redis 會自動刪除它。expire 命令的使用方法為

expire key seconds

其中 seconds 表示鍵的過期時間,單位為秒,expire 命令返回 1 表示設置成功,返回 0 表示鍵不存在或者設置失敗。

127.0.0.1:6379> expire b 10
(integer) 1
127.0.0.1:6379> expire z 10
(integer) 0
127.0.0.1:6379> 

ttl 命令用于查詢一個鍵還有多久會被刪除,返回值是鍵的剩余時間,單位為秒;
當鍵不存在時返回 -2 ;當鍵沒有過期時間即永久存在,那么返回值為 -1

127.0.0.1:6379> keys *
1) "num"
2) "set"
3) "student"
4) "a"
5) "d"
6) "list"
7) "c"
8) "set_a"
9) "set_b"
127.0.0.1:6379> expire num 10
(integer) 1
127.0.0.1:6379> ttl num
(integer) 6
127.0.0.1:6379> ttl num
(integer) 4
127.0.0.1:6379> ttl num
(integer) 2
127.0.0.1:6379> ttl num
(integer) -2
127.0.0.1:6379> keys *
1) "set"
2) "student"
3) "a"
4) "d"
5) "list"
6) "c"
7) "set_a"
8) "set_b"
127.0.0.1:6379>

persist 命令用于設置取消鍵的過期時間,如果過期時間被成功清除則返回 1;否則返回 0

127.0.0.1:6379> expire d 20
(integer) 1
127.0.0.1:6379> ttl d
(integer) 17
127.0.0.1:6379> persist d
(integer) 1
127.0.0.1:6379> ttl d
(integer) -1
127.0.0.1:6379> 

除過使用 persist 命令外,使用 set 命令為鍵賦值也會清除鍵的過期時間。

3. Redis 高級特性 —— 排序

總結

以上是生活随笔為你收集整理的Redis 高级特性(1)—— 事务 过期时间 排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。