首頁 > 軟體

Redis通用命令介紹以及key的層級結構講解

2022-12-09 14:04:12

1 Redis資料結構介紹

Redis是一個key-value的資料庫,key一般是String型別,不過value的型別多種多樣:

value的資料型別共有8種,前面5中為基本資料型別,後面3種是針對不同的情況指定的特殊資料型別。

命令不要死記,學會查詢就好啦

Redis為了方便我們學習,將操作不同資料型別的命令也做了分組,在官網( Commands | Redis)可以檢視到不同的命令:(點選COMMANDS)

當然我們也可以通過Help命令來幫助我們去檢視命令

2 Redis通用命令

通用指令是部分資料型別的,都可以使用的指令,常見的有:

  • KEYS:檢視符合模板的所有key
  • DEL:刪除一個指定的key
  • EXISTS:判斷key是否存在
  • EXPIRE:給一個key設定有效期,有效期到期時該key會被自動刪除
  • TTL:檢視一個KEY的剩餘有效期

通過help [command] 可以檢視一個命令的具體用法,例如:

接下來演示上述常用命令的使用:

溫馨提示:以下的內容所有的程式碼塊都是從命令列視窗複製過來的,包括命令和結果哦~

1.KEYS:檢視符合模板的所有key

127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379>
# 查詢以a開頭的key
127.0.0.1:6379> keys a*
1) "age"
127.0.0.1:6379>

貼心小提示:在生產環境下,不推薦使用keys 命令,因為這個命令在key過多的情況下,效率不高

2.DEL:刪除一個指定的key

127.0.0.1:6379> help del
  DEL key [key ...]
  summary: Delete a key
  since: 1.0.0
  group: generic
127.0.0.1:6379> del name #刪除單個
(integer) 1  #成功刪除1個
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 #批次新增資料
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
4) "age"
127.0.0.1:6379> del k1 k2 k3 k4
(integer) 3   #此處返回的是成功刪除的key,由於redis中只有k1,k2,k3 所以只成功刪除3個,最終返回
127.0.0.1:6379>
127.0.0.1:6379> keys * #再查詢全部的key
1) "age"    #只剩下一個了
127.0.0.1:6379>

貼心小提示:在拷貝程式碼的時候,只需要拷貝對應的命令哦~

3.EXISTS:判斷key是否存在

127.0.0.1:6379> help EXISTS
  EXISTS key [key ...]
  summary: Determine if a key exists
  since: 1.0.0
  group: generic
127.0.0.1:6379> exists age
(integer) 1
127.0.0.1:6379> exists name
(integer) 0

4.EXPIRE:給一個key設定有效期,有效期到期時該key會被自動刪除

5.TTL:檢視一個KEY的剩餘的存活時間

127.0.0.1:6379> expire age 10
(integer) 1
127.0.0.1:6379> ttl age
(integer) 8
127.0.0.1:6379> ttl age
(integer) 6
127.0.0.1:6379> ttl age
(integer) -2
127.0.0.1:6379> ttl age
(integer) -2  #當這個key過期了,那麼此時查詢出來就是-2 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set age 10 #如果沒有設定過期時間
OK
127.0.0.1:6379> ttl age
(integer) -1  # ttl的返回值就是-1

貼心小提示:

(1)記憶體非常寶貴,對於一些資料,我們應當給他一些過期時間,當過期時間到了之後,他就會自動被刪除~

(2)當使用TTL命令時,如果返回 -1 值,不是代表已經被銷燬,而是代表永久哦~

3 Redis命令-Key的層級結構

Redis沒有類似MySQL中的Table的概念,我們該如何區分不同型別的key呢?

例如,需要儲存使用者.商品資訊到redis,有一個使用者id是1,有一個商品id恰好也是1,此時如果使用id作為key,那就會衝突了,該怎麼辦?

我們可以通過給key新增字首加以區分,不過這個字首不是隨便加的,有一定的規範:

Redis的key允許有多個單詞形成層級結構,多個單詞之間用':'隔開,格式如下:

這個格式並非固定,也可以根據自己的需求來刪除或新增詞條。

這個格式並非固定,也可以根據自己的需求來刪除或新增詞條。

例如我們的專案名稱叫 heima,有user和product兩種不同型別的資料,我們可以這樣定義key:

  • user相關的key:heima:user:1
  • product相關的key:heima:product:1

如果Value是一個Java物件,例如一個User物件,則可以將物件序列化為JSON字串後儲存:

KEYVALUE
heima:user:1{"id":1, "name": "Jack", "age": 21}
heima:product:1{"id":1, "name": "小米11", "price": 4999}

一旦我們向redis採用這樣的方式儲存,那麼在視覺化介面中,redis會以層級結構來進行儲存,形成類似於這樣的結構,更加方便Redis獲取資料

到此這篇關於Redis通用命令介紹以及key的層級結構講解的文章就介紹到這了,更多相關Redis通用命令內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com