Redis 常用命令以及使用事務、設置key超時


Redis 中的事務

使用MULTI與EXEC之間之間執行多個操作來處理一個事務: 

1 127.0.0.1:6379> MULTI
2 OK
3 127.0.0.1:6379> SADD key element
4 QUEUED
5 127.0.0.1:6379> LPUSH helper_key x
6 QUEUED
7 127.0.0.1:6379> EXEC
8 1) (integer) 1
9 2) (integer) 1

MULTI開啟事務(開啟成功返回OK),MULTI與EXEC之間的多個操作僅僅是暫時緩存起來(我們可以看到返回為QUEUED),直到執行EXEC時,提交事務。

Redis 超時(TTL):數據在限定時間內存活

Redis可以expire對鍵設置生命周期TTL:

1 /*先存入數據到list中*/
2 127.0.0.1:6379> lpush ttlTestList ttl
3 (integer) 1
4 /*再設置超時時間(為5秒失效)*/
5 127.0.0.1:6379> expire ttlTestList 5
6 (integer) 1

5秒后獲取元素為空:

1 127.0.0.1:6379> lpop ttlTestList
2 (nil)

我們看到超時時間一過,ttlTestList鍵被刪除了

1 127.0.0.1:6379> keys *
2 1) "zset"
3 2) "set"
4 3) "helper_key"
5 4) "mylist"
6 5) "user"
7 6) "mykey"
8 7) "relList"

上面的例子使用了EXPIRE來設置超時時間(也可以再次調用這個命令來改變超時時間,使用PERSIST命令去除超時時間 )。 
使用ttl:

1 127.0.0.1:6379> lpush ttlTestList ttl
2 (integer) 1
3 /*設置超時時間為10秒*/
4 127.0.0.1:6379> expire ttlTestList 10
5 (integer) 1
6 /*使用ttl查看剩余存活時間*/
7 127.0.0.1:6379> ttl ttlTestList
8 (integer) 5

KEYS 命令

keys pattern 可以查看所在數據庫中符合pattern匹配模式的鍵,pattern通配符:

符號 含義
? 匹配一個字符
* 匹配任意字符(包括0個字符)
[] 匹配括號里的任意字符,也可以使用“-”表示范圍,如a[b-d]可以匹配ab、ac、ad
\x 可以匹配轉義字符。如匹配?,就使用\?
1 127.0.0.1:6379[1]> keys list?
2 1) "list1"

注意: keys會便利數據庫的所有鍵,如果鍵數量較大,不建議在生產使用.

EXISTS 命令

exists 用於判斷某個鍵是否存在,存在返回1,否則返回0.

1 127.0.0.1:6379[15]> keys *
2 1) "testKey"
3 127.0.0.1:6379[15]> exists testKey
4 (integer) 1
5 127.0.0.1:6379[15]> exists testKey2
6 (integer) 0

DEL 命令

del 用於刪除一個或多個鍵,del key [key2…],返回值是刪除的鍵的個數:

1 127.0.0.1:6379[15]> del testKey
2 (integer) 1
3 /*因為之前已經刪除testKey鍵了,再使用del操作時,實際上並沒有刪除任何鍵,於是返回0*/
4 127.0.0.1:6379[15]> del testKey
5 (integer) 0

SELECT 命令

Redis 的數據庫默認存在編號為0-15的共計16個數據庫實例,可以通過設置databases參數修改這個默認設置。我們可以使用SELECT命令選擇使用指定的數據庫:

1 /*選擇使用數據庫1*/
2 127.0.0.1:6379[1]> select 1
3 OK
4 /*在數據庫1中設置一個鍵*/
5 127.0.0.1:6379[1]> lpush list1 ele1
6 (integer) 1
7 127.0.0.1:6379[1]> keys *
8 1) "list1"

切換數據庫0,在數據庫0中是看不到數據庫1中的鍵的:

1 /*切換到數據庫0*/
2 127.0.0.1:6379[1]> select 0
3 OK
4 /*數據庫0中無鍵*/
5 127.0.0.1:6379> keys *
6 (empty list or set)

FLUSHALL 命令

flushall 命令會清除所有數據庫實例的鍵值數據(默認配置的話數據庫0-15會全刪除)。恨他,就用flushall來對付他吧。

TYPE 命令

type 命令用來獲取鍵的類型,返回值可能是 string(字符串類型)list(列表類型)set(集合類型)hash(散列類型)zset(有序集合類型)

RANDOMKEY

randomkey 可以隨機獲取當前數據庫中的一個鍵。

 1 127.0.0.1:6379> select 0
 2 OK
 3 127.0.0.1:6379> keys *
 4 1) "strkey4"
 5 2) "setKey"
 6 3) "code_list1"
 7 4) "foo"
 8 5) "strkey3"
 9 6) "strkey27"
10 7) "strkey6"
11 8) "strkey5"
12 127.0.0.1:6379> randomkey
13 "strkey4"
14 127.0.0.1:6379> randomkey
15 "setKey"
16 127.0.0.1:6379> randomkey
17 "strkey3"
18 127.0.0.1:6379> randomkey
19 "strkey4"
20 127.0.0.1:6379> randomkey
21 "strkey6"

RENAME 重命名鍵名

rename oldKeyName newKeyName 將oldKeyName 鍵改名為newKeyName。

 1 127.0.0.1:6379> keys *
 2 1) "strkey4"
 3 2) "setKey"
 4 3) "code_list1"
 5 4) "foo"
 6 5) "strkey3"
 7 6) "strkey27"
 8 7) "strkey6"
 9 8) "strkey5"
10 127.0.0.1:6379> rename setKey setKey88
11 OK
12 127.0.0.1:6379> keys *
13 1) "strkey3"
14 2) "foo"
15 3) "code_list1"
16 4) "strkey5"
17 5) "strkey6"
18 6) "strkey4"
19 7) "setKey88"
20 8) "strkey27"

MOVE

move 命令可以將一個數據庫中的鍵移動到另一個數據庫中:

 1 /*數據庫0中的key*/
 2 127.0.0.1:6379> keys *
 3  1) "counter:__rand_int__"
 4  2) "key:__rand_int__"
 5  3) "strkey3"
 6  4) "code_list1"
 7  5) "strkey5"
 8  6) "strkey6"
 9  7) "strkey4"
10  8) "setKey88"
11  9) "mylist"
12 10) "strkey27"
1 /*數據庫1中無key*/
2 127.0.0.1:6379> select 1
3 OK
4 127.0.0.1:6379[1]> keys *
5 (empty list or set)
 1 /*移動0中的key到1中*/
 2 11) "strkey27"
 3 127.0.0.1:6379> move foo 1
 4 (integer) 1
 5 127.0.0.1:6379> keys *
 6  1) "counter:__rand_int__"
 7  2) "key:__rand_int__"
 8  3) "strkey3"
 9  4) "code_list1"
10  5) "strkey5"
11  6) "strkey6"
12  7) "strkey4"
13  8) "setKey88"
14  9) "mylist"
15 10) "strkey27"
1 /*查看1中,可以看到剛剛移動過來的key:foo*/
2 127.0.0.1:6379[1]> keys *
3 1) "foo"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM