1. 程式人生 > >系統學習redis之八——redis常用命令

系統學習redis之八——redis常用命令

指定 flushdb ... integer and ron 格式 包括 代碼高亮

redis提供了豐富的命令對數據庫和各種數據庫類型進行操作,這些命令可以在linux終端使用,包括以下兩種:
1、鍵值相關命令
2、服務器相關命令

redis命令介紹

一、鍵值相關命令

  • key:返回滿足給定匹配條件的所有key。用表達式*代表取出所有的key
  • exists:確認一個key是否存在,存在即返回1,不存在就返回0
  • del:刪除一個key
  • expire:設置一個key的過期時間
  • persist:移除給定的key的過期時間
  • randomkey:隨機返回數據庫裏面的一個key
  • rename:重命名key
  • type:返回指定key的數據類型
  • move:將當前數據庫中的key轉移到其他數據庫中

二、服務器相關命令

  • ping:測試連接是否存活
  • echo:在命令行打印一些內容
  • select:選擇進入某個數據庫。redis數據庫編號從0~15,我們可以選擇任意一個數據庫來進行數據庫的存取。超出0~15的這個範圍就會報錯
  • quit:退出redis數據庫連接,也可以用exit(類似退出MySQL數據庫一樣)
  • dbsize:返回當前數據庫中key的數目
  • info:獲取服務器的信息和各種統計值
  • config get:返回制定的配置及其參數值
  • flushdb:刪除當前數據庫中的所有key
  • flushall:刪除所有數據庫中的所有key

redis命令操作

一、鍵值相關命令

1、key:返回滿足給定匹配條件的所有key。用表達式*代表取出所有的key


例如:返回redis裏面指定的key

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> KEYS *   #取出所有的key,下面的key就是前面實驗中創建的所有key
 1) "name"
 2) "myset5"
 3) "myset2"
 4) "user:001"
 5) "list6"
 6) "list1"
 7) "myset1"
 8) "list3"
 9) "zset1"
10) "user:002"
11) "sset2"
12) "email"
13) "myset3"
14) "mail"
15) "sset1"
16) "myset4"
17) "list2"
18) "myset6"
19) "myset7"
20) "list5"
127.0.0.1:6379> KEYS my*   #取出以my開頭的所有key
1) "myset5"
2) "myset2"
3) "myset1"
4) "myset3"
5) "myset4"
6) "myset6"
7) "myset7"
127.0.0.1:6379> 

備註,同《系統學習redis之三——redis數據類型之string類型及操作》一樣,後面的例子也都在同一臺機器一次性操作完畢的,因為後面的代碼如果不加上“ [root@test101 redis-4.0.1]# src/redis-cli ”這一句。代碼高亮也會格式有問題,所以後面所有的例子中都加上了“[root@test101 redis-4.0.1]# src/redis-cli ”,主要為了格式問題。

2、exists:確認一個key是否存在,存在即返回1,不存在就返回0
例如:確認當前數據庫中myset1和myset0是否存在

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> KEYS my*        #查看redis裏面所有以my開頭的key,有下面這些
1) "myset5"
2) "myset2"
3) "myset1"
4) "myset3"
5) "myset4"
6) "myset6"
7) "myset7"
127.0.0.1:6379> EXISTS myset1       #確認myset1是否存在,從上面看出,是有myset1的,返回1,表示存在
(integer) 1
127.0.0.1:6379> EXISTS myset10      #確認myset10是否存在,從上面看出,是沒有myset10的,返回0,表示不存在
(integer) 0
127.0.0.1:6379> 

3、del:刪除一個key
例如:刪除上面例子中的myset1

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> EXISTS myset1
(integer) 1
127.0.0.1:6379> DEL myset1
(integer) 1
127.0.0.1:6379> EXISTS myset1   #myset1已經不存在了,刪除成功
(integer) 0
127.0.0.1:6379> 

4、expire:設置一個key的過期時間
例如:給已經存在名為“age”的key設置過期時間

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> SET age 18   #設置一個新的key名為age,值為18 
OK
127.0.0.1:6379> GET age     #查看age
"18"
127.0.0.1:6379> EXPIRE age 10   #給age設置過期時間為10秒
(integer) 1
127.0.0.1:6379> TTL age         #ttl查看age剩下的過期時間,下面的7就表示還有1秒鐘過期
(integer) 7
127.0.0.1:6379> TTL age
(integer) 2
127.0.0.1:6379> TTL age     #當過期時間變成了負值,就表示這個key已經過期了
(integer) -2
127.0.0.1:6379> GET age    #再get查看,就已經為空了,註意:不是值被清空,而是整個key都給刪除了
(nil)
127.0.0.1:6379> 

5、persist:移除給定的key的過期時間
例如:給上面例子裏面數據庫1中的age設置20秒過期時間,然後再取消設置

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379[1]> GET age
"16"
127.0.0.1:6379[1]> EXPIRE age 20    #設置age的過期前時間為20秒
(integer) 1
127.0.0.1:6379[1]> TTL age      #查看剩余過期時間
(integer) 17
127.0.0.1:6379[1]> TTL age
(integer) 15
127.0.0.1:6379[1]> PERSIST age    #取消設置過期時間
(integer) 1
127.0.0.1:6379[1]> TTL age      #再ttl查看剩余過期時間也返回-1,這裏的-1不表示已經過期,表示已經取消過期時間
(integer) -1
127.0.0.1:6379[1]> GET age      #過幾分鐘再查看,age依然存在,最開始設置的20秒過期時間已經被成功取消
"16"
127.0.0.1:6379[1]> 

6、randomkey:隨機返回數據庫裏面的一個key
例如:隨機返回當前數據庫裏面的key

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> RANDOMKEY 
"list6"
127.0.0.1:6379> RANDOMKEY 
"list2"
127.0.0.1:6379> RANDOMKEY 
"sset2"
127.0.0.1:6379> RANDOMKEY 
"myset7"
127.0.0.1:6379> RANDOMKEY 
"email"
127.0.0.1:6379> 

7、rename:重命名key
例如:將名字為“mail”的key重命名為“key_new”

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> KEYS  mai*
1) "mail"
127.0.0.1:6379> RENAME mail mail_new
OK
127.0.0.1:6379> KEYS  mai*
1) "mail_new"
127.0.0.1:6379> 

8、type:返回指定key的數據類型
例如:返回當前數據庫中list5和name、sset1這幾個key的數據類型

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> TYPE list5
list
127.0.0.1:6379> TYPE name
string
127.0.0.1:6379> TYPE sset1      #返回的list、string和zset分別代表這幾個key的數據類型
zset
127.0.0.1:6379> 

9、move:將當前數據庫中的key轉移到其他數據庫中
例如:在數據庫0中創建名為age的key並設置值為16,然後將age這個key移動到數據庫1中

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> SELECT 0     #先進入數據庫0,確認age這個key不存在
OK
127.0.0.1:6379> EXISTS age
(integer) 0
127.0.0.1:6379> SELECT 1      #再先進入數據庫1,確認age這個key不存在
OK
127.0.0.1:6379[1]> EXISTS age
(integer) 0
127.0.0.1:6379[1]> SELECT 0    #返回數據庫0,創建age這個key,並設置值為16
OK
127.0.0.1:6379> SET age 16
OK
127.0.0.1:6379> EXISTS age    #現在age還存在與數據庫0中
(integer) 1
127.0.0.1:6379> GET age
"16"
127.0.0.1:6379> MOVE age 1    #將age這個key移動到數據庫1中
(integer) 1
127.0.0.1:6379> EXISTS age   #然後再查看,數據庫0裏面就沒有age這個key了
(integer) 0
127.0.0.1:6379> SELECT 1      #進入數據庫1中查看,age這個key已經存在,並且值為16
OK
127.0.0.1:6379[1]> EXISTS age
(integer) 1
127.0.0.1:6379[1]> GET age
"16"
127.0.0.1:6379[1]> 

二、服務器相關命令

1、ping:測試連接是否存活
例如:測試當前redis數據庫是否存活

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> ping     #返回PONG,表示連接成功,是OK的
PONG
127.0.0.1:6379> ping     #在執行這條命令之前,重開一個窗口,殺掉redis進程,再回來執行這個ping
Could not connect to Redis at 127.0.0.1:6379: Connection refused   #因為redis進程已經在另一個窗口被kill掉,所以連接失敗
not connected> ping    #然後在另一個窗口再重新啟動redis,再回來ping,返回PONG,連接OK
PONG
127.0.0.1:6379> 

2、echo:在命令行打印一些內容
例如:在當前命令行輸出某些內容

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> ECHO crystal
"crystal"
127.0.0.1:6379> ECHO 1990
"1990"
127.0.0.1:6379> 

3、select:選擇進入某個數據庫。redis數據庫編號從0~15,我們可以選擇任意一個數據庫來進行數據庫的存取。超出0~15的這個範圍就會報錯
例如:選擇進入指定的數據庫

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> SELECT 10
OK
127.0.0.1:6379[10]> SELECT 18       #18數據庫已經超出範圍,所以報錯
(error) ERR DB index is out of range
127.0.0.1:6379[10]>

4、quit:退出redis數據庫連接,也可以用exit(類似退出MySQL數據庫一樣)
例如:退出當前redis數據庫,回到linux系統命令行

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> quit
[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> 
127.0.0.1:6379> exit
[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379>

5、dbsize:返回當前數據庫中key的數目
例如:返回放錢數據庫的key的數量

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> DBSIZE     #返回當前數據庫的key的數量,下面返回的18就表示有18個key
(integer) 18
127.0.0.1:6379[1]> SELECT 10    #10數據庫沒有創建過key,返回的數量就是0
OK
127.0.0.1:6379[10]> DBSIZE
(integer) 0
127.0.0.1:6379[10]> 

6、info:獲取服務器的信息和各種統計值
例如:查看當前的數據庫服務

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> info
# Server
redis_version:4.0.1
redis_git_sha1:00000000
redis_git_dirty:0
......              #省略若幹
127.0.0.1:6379> 

7、config get:返回制定的配置及其參數值
例如:返回執行的配置及其參數值

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> CONFIG GET *      #如果不指定要返回的內容,用*代替,就會返回所有的參數值  
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
......              #省略若幹
127.0.0.1:6379> 
127.0.0.1:6379> CONFIG GET dbfilename      #返回dbfilename及其參數值
1) "dbfilename"
2) "dump.rdb"
127.0.0.1:6379> 

8、flushdb:刪除當前數據庫中的所有key
例如:刪除數據庫1中的所有key

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379> SELECT 1            #先進入數據庫1 
OK
127.0.0.1:6379[1]> DBSIZE           #查看數據庫1的key總數
(integer) 3
127.0.0.1:6379[1]> FLUSHDB      #刪除當前庫的所有key
OK
127.0.0.1:6379[1]> DBSIZE   #再查看,數據庫1已經沒有key了
(integer) 0
127.0.0.1:6379[1]>

9、flushall:刪除所有數據庫中的所有key
例如:清除所有數據庫中的所有key

[root@test101 redis-4.0.1]# src/redis-cli 
127.0.0.1:6379[1]> SELECT 0     #首先切換到數據庫0,裏面有18個key
OK
127.0.0.1:6379> DBSIZE
(integer) 18
127.0.0.1:6379> SELECT 1        #再切換到數據庫1,裏面有3個key
OK
127.0.0.1:6379[1]> DBSIZE
(integer) 3
127.0.0.1:6379[1]> FLUSHALL     #使用flushall清空所有庫
OK
127.0.0.1:6379[1]> DBSIZE   #數據庫1已經沒有了key
(integer) 0
127.0.0.1:6379[1]> SELECT 0     #再回到數據庫0,也已經沒有了key,所有key都被刪除完了
OK
127.0.0.1:6379> DBSIZE
(integer) 0
127.0.0.1:6379>

系統學習redis之八——redis常用命令