一、全局命令
1.查看redis中所有的鍵
語法:keys *
使用redis的測試客戶端連接redis,這裏使用單實例來做實驗
[root@localhost ~]# redis-cli #這裏省略了 -h 和 -p參數,默認連接到127.0.0.1:6379
127.0.0.1:6379>
#127.0.0.1:6379> keys *
(empty list or set) #新部署的redis沒有鍵,提示空列表或集合
向redis中插入3對鍵值對:
127.0.0.1:6379> set name jingjing
OK
127.0.0.1:6379> set age 24
OK
127.0.0.1:6379> set country china
OK
再次使用keys *
命令來查詢redis中存在的鍵:
127.0.0.1:6379> keys *
1) "country"
2) "age"
3) "name"
2.查詢鍵的總數
語法:dbsize
插入一個列表類型的鍵值對,其值是由多個元素組成:
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
然後再使用dbsize
查詢:
127.0.0.1:6379> dbsize
(integer) 4 #總共有4個鍵,如下所示的四個
127.0.0.1:6379> keys *
1) "country"
2) "mylist"
3) "age"
4) "name"
Notes:dbsize
在計算總的鍵數時不會遍歷所有的鍵,而是直接獲取redis內置的鍵總數變量,所以其時間複雜度是O(1)。而用keys *
命令統計鍵時會遍歷所有的鍵,所以他的時間複雜度與鍵的數量有關,即爲O(n),n爲鍵的數量,可想而知,當存在大量的鍵時會佔用很多資源,所以在生產環境禁止使用。
3.檢查鍵是否存在
語法:exists key_name
如果鍵存在則返回1,若不存在則返回0:
127.0.0.1:6379> exists name
(integer) 1 #存在,返回1
127.0.0.1:6379> exists redis
(integer) 0 #不存在,返回0
4.刪除鍵
語法:del key_name [key_name ...]
del
是一個通用的命令,無論鍵的值是何種數據結構類型,都可將其刪除,如把字符串類型的鍵name和列表類型的鍵mylist分別刪除:
127.0.0.1:6379> del name
(integer) 1 #刪除成功,返回刪除的鍵的個數
127.0.0.1:6379> del mylist
(integer) 1 #刪除成功,返回刪除的鍵的個數
127.0.0.1:6379> exists name
(integer) 0 #再次查詢,返回0,表示不存在
127.0.0.1:6379> exists mylist
(integer) 0
如果試圖刪除一個不存在的鍵,會返回0:
127.0.0.1:6379> del name
(integer) 0 #因爲剛纔已經把鍵name刪除了,所以返回0
而且del
命令還支持批量刪除:
127.0.0.1:6379> del country age
(integer) 2 #成功刪除2個鍵
5.爲鍵設置過期時間
語法:expire key_name seconds
redis支持對鍵設置過期時間,就像保質期一樣,當超過了過期時間,則會自動將鍵刪除,創建一個鍵name併爲其設置過期時間爲5秒:
127.0.0.1:6379> set name jingjing
OK
127.0.0.1:6379> expire name 5
(integer) 1 #設置過期時間爲5秒
127.0.0.1:6379> get name
(nil) #因爲過期後被刪除,所以查詢時返回nil
那有了鍵過期時間,就像我們喫東西前總要看一下還有多久過期,該如何查詢鍵還有多久過期,答案是使用ttl(time to live)命令就會返回鍵的剩餘過期時間,它有3種返回值:
- 大於等於0的整數:鍵剩餘過期時間
- -1:鍵沒有設置過期時間
- -2:鍵不存在
語法:ttl key_name
127.0.0.1:6379> ttl name
(integer) -2 #鍵不存在
127.0.0.1:6379> set name jingjing
OK #設置鍵name
127.0.0.1:6379> expire name 20
(integer) 1 #設置鍵name的過期時間爲20秒
127.0.0.1:6379> ttl name
(integer) 12 #鍵過期時間還有12秒
6.查詢鍵的數據結構類型
語法:type key_name
例如鍵name的類型爲字符串,則返回string。鍵mylist是列表類型,則返回list:
127.0.0.1:6379> type name
string
127.0.0.1:6379> type mylist
list
127.0.0.1:6379> type age
none #如果鍵不存在,則返回none