Redis 常用命令

ITLearner發表於2020-02-10

前言

Redis提供了豐富的命令(command)對資料庫和各種資料型別進行操作,這些command可以在Linux終端使用。在程式設計時,比如各類語言包,這些命令都有對應的方法。下面將Redis提供的命令做一總結。

鍵值相關命令

keys

返回滿足給定pattern的所有key

127.0.0.1:6379> keys *
 1) "mylist4"
 2) "myset7"
 3) "name1"
 4) "myset3"
 5) "myset2"
 6) "mylist2"
 7) "mylist6"
 8) "name"
 9) "myhash"
10) "mylist7"
11) "key1"
12) "mylist5"
13) "mylist8"
14) "myzset2"
15) "myzset3"
16) "myzset"
17) "myset5"
18) "myset4"
19) "mylist3"
20) "myset"
21) "myset6"
22) "age"
23) "mylist"
24) "key2"
複製程式碼

用表示式*,代表取出所有的key。

127.0.0.1:6379> keys mylist*
1) "mylist4"
2) "mylist2"
3) "mylist6"
4) "mylist7"
5) "mylist5"
6) "mylist8"
7) "mylist3"
8) "mylist"
複製程式碼

用表示式mylist*,代表取出所有以mylist開頭的key。

exists

確認一個key是否存在

127.0.0.1:6379> exists HongWan
(integer) 0
127.0.0.1:6379> exists age
(integer) 1
複製程式碼

從結果來資料庫中不存在HongWan這個key,但是age這個key是存在的。

del

刪除一個key

127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> exists age
(integer) 0
複製程式碼

expire

設定一個key的過期時間(單位:秒)

127.0.0.1:6379> exists addr
(integer) 1
127.0.0.1:6379> ttl addr
(integer) -1
127.0.0.1:6379> expire addr 10
(integer) 1
127.0.0.1:6379> ttl addr
(integer) 6
127.0.0.1:6379> ttl addr
(integer) 5
127.0.0.1:6379> ttl addr
(integer) 4
127.0.0.1:6379> ttl addr
(integer) -2
127.0.0.1:6379> exists addr
(integer) 0
複製程式碼

可以看到,未設定過期時間時,ttl值為-1,設定10s過期後,不斷地使用ttl獲取key的有效時長,當值為-2時,表示已過期並被刪除。

move

將當前資料庫中的key轉移到其它資料庫中

127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set age 30
OK
127.0.0.1:6379> get age
"30"
127.0.0.1:6379> move age 1
(integer) 1
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get age
"30"
複製程式碼

在本例中,我先顯式的選擇了資料庫0,然後在這個庫中設定一個key,接下來我們將這個key從資料庫0移到資料庫1,之後我們確認在資料庫0中無此key了, 但在資料庫1中存在這個key,說明我們轉移成功了 。

persist

移除給定key的過期時間

127.0.0.1:6379[1]> expire age 300
(integer) 1
127.0.0.1:6379[1]> ttl age
(integer) 296
127.0.0.1:6379[1]> persist age
(integer) 1
127.0.0.1:6379[1]> ttl age
(integer) -1
複製程式碼

在這個例子中,我們手動的將未到過期時間的key,成功設定為過期。

randomkey

隨機返回key空間的一個key

127.0.0.1:6379> randomkey
"mylist5"
127.0.0.1:6379> randomkey
"myzset2"
複製程式碼

通過結果可以看到取key的規則是隨機的。

rename

重新命名key

127.0.0.1:6379[1]> keys *
1) "age"
127.0.0.1:6379[1]> rename age age_new
OK
127.0.0.1:6379[1]> keys *
1) "age_new"
複製程式碼

age成功的被我們改名為age_new了。

type

返回值的型別

127.0.0.1:6379> type name
string
127.0.0.1:6379> type myset
set
127.0.0.1:6379> type myzset
zset
複製程式碼

伺服器相關命令

ping

測試連線是否存活

127.0.0.1:6379> ping
PONG
// 執行下面命令之前,我們停止redis伺服器
127.0.0.1:6379> ping
Could not connect to Redis at 127.0.0.1:6379: Connection refused
// 執行下面命令之前,我們啟動redis伺服器
not connected> ping
PONG
複製程式碼

echo

在命令列列印一些內容

127.0.0.1:6379> echo HongWan
"HongWan"
複製程式碼

select

選擇資料庫。Redis資料庫編號從0~15,我們可以選擇任意一個資料庫來進行資料的存取

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index
複製程式碼

quit

退出連線

127.0.0.1:6379> quit
root@test01:~# 
複製程式碼

dbsize

返回當前資料庫中key的數目

127.0.0.1:6379> dbsize
(integer) 23
複製程式碼

結果說明此庫中有23個key。

info

獲取伺服器的資訊和統計

127.0.0.1:6379> info
# Server
redis_version:3.0.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:28b6715d3583bf8e
redis_mode:standalone
os:Linux 4.4.0-148-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:5.4.0
...
複製程式碼

此結果用於說明伺服器的基礎資訊,包括版本、啟動時間等。

monitor

實時轉儲收到的請求

先在終端1輸入monitor命令,將會進入等待狀態

127.0.0.1:6379> monitor
OK
複製程式碼

新建一個終端,輸入一些redis命令

127.0.0.1:6379> keys *
 1) "myset3"
 2) "myset2"
 3) "mylist7"
 4) "mylist4"
 5) "key1"
 6) "myset7"
 7) "name1"
 8) "mylist6"
 9) "myzset"
10) "mylist2"
11) "myset"
12) "mylist"
13) "myhash"
14) "myset4"
15) "name"
16) "myset5"
17) "myzset3"
18) "mylist3"
19) "mylist5"
20) "myzset2"
21) "mylist8"
22) "key2"
23) "myset6"
127.0.0.1:6379> get addr
(nil)
複製程式碼

回到終端1中,我們將會看到列印出了剛才我們在終端2中敲入的redis命令

127.0.0.1:6379> monitor
OK
1558844434.297954 [0 127.0.0.1:34926] "keys" "*"
1558844444.673315 [0 127.0.0.1:34926] "get" "addr"
複製程式碼

config get

獲取伺服器配置資訊

127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"
複製程式碼

本例中我們獲取了dir這個引數配置的值,如果想獲取全部引數據的配置值也很簡單,只需 執行”config get *”即可將全部的值都顯示出來。

flushdb

刪除當前選擇資料庫中的所有key

127.0.0.1:6379> dbsize
(integer) 23
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> dbsize
(integer) 0
複製程式碼

在本例中我們將0號資料庫中的key都清除了。

flushall

刪除所有資料庫中的所有key

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 1
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 0
複製程式碼

在本例中我們先檢視了一個1號資料庫中有一個key,然後我切換到0號庫執行flushall命令,結果1號庫中的key也被清除了,說明此命令工作正常。

資料相關命令

?Redis-資料型別及操作

相關文章