Redis入門(1) - 使用Cli

* [在Docker中使用Redis]
* [Redis-Cli]
* [命令的返回值類型]
* [Redis中的多數據庫]
* [基礎命令]

Redis是REmote DIctionary Server(遠程字典服務器)的縮寫,它以字典結構存儲數據,並允許其他應用通過TCP協議讀寫字典中的內容。

Redis數據庫中的所有數據都存儲在內存中。由於內存的讀寫速度遠快於硬盤,因此Redis在性能上對比其他基於硬盤存儲的數據庫有非常明顯的優勢,在一臺普通的筆記本電腦上,Redis可以在一秒內讀寫超過十萬個鍵值。同時Redis也支持持久化數據到硬盤。

在Docker中使用Redis

在Docker中學習和使用Redis非常方便,免去了直接在機器上安裝:

$ docker run -itd --name redis-test -p 6379:6379 redis:latest

redis的默認監聽的端口爲6379,然後就可以進入redis容器了:

$ docker exec -it redis-test /bin/bash

Redis-Cli

redis-cli是Redis的命令行客戶端,可以通過cli向Redis發送一系列命令。
在前面docker exec進入redis容器後,就可以使用redis-cli了,可以將命令作爲redis-cli的參數,比如用於測試客戶端與Redis連接是否正常的PING命令,可以直接這樣輸入:

$ redis-cli PING

也可以不附帶參數運行redis-cli,這樣會進入交互模式,然後直接輸入命令:

$ redis-cli
redis 127.0.0.1:6379 > PING

兩種方式下,只要連接正常,都會受到PONG回覆。
Redis中的命令是不區分大小寫的,但這裏爲了直觀,用大寫來表示。

命令的返回值類型

redis執行命令後的返回值有下面幾類:

  1. 狀態回覆(status reply)
    狀態回覆是最簡單的一種回覆,比如向Redis發送SET命令設置某個鍵的值時,Redis會回覆狀態OK表示設置成功。之前執行PING命令收到的PONG也屬於狀態回覆。

  2. 錯誤回覆(error reply)
    命令執行失敗會返回錯誤回覆,這類回覆以(error)開頭。

  3. 整數回覆(integer reply)
    對於類似增加鍵值、獲取鍵數量等命令會返回整數結果,整數回覆與(integer)開頭。

  4. 字符串回覆(bulk reply)
    字符串回覆是最常見的一種回覆類型,當請求一個字符串類型鍵的鍵值或一個其他類型鍵中的某個元素時就會得到一個字符串回覆。字符串回覆以雙引號包裹。但如果鍵不存在時會返回空,用(nil)表示。

  5. 多行字符串回覆(multi-bulk reply)
    這種回覆也比較常見,比如當請求一個非字符串類型鍵的元素列表時就會收到多行字符串回覆,多行字符串回覆中的每行字符串都以一個序號開頭,如獲取所有的鍵:

redis 127.0.0.1:6379 > KEYS *
1) "k1"
2) "k2"

Redis中的多數據庫

一個Redis實例提供了多個用來存儲數據的字典,客戶端可以指定將數據存儲在哪個字典中。這與在一個關係數據庫實例中可以創建多個數據庫類似,所以可以將其中的每個字典都理解成一個獨立的數據庫。

Redis默認支持16個數據庫,用數字命名,分別爲0-15。數據庫的數量可以通過配置來修改。客戶端與Redis建立連接後會自動選擇0號數據庫,可以自行切換,切換到1號數據庫的命令爲:

SELECT 1

Redis中的數據庫與我們常規理解的關係型數據庫有很大的區別:

  • Redis不支持自定義數據庫的名字;
  • Redis也不支持爲每個數據庫設置不同的訪問密碼,所以一個客戶端要麼可以訪問全部數據庫,要麼無法訪問所有數據庫;
  • 多個數據庫之間並不是完全隔離的,比如使用FLUSHALL命令可以清空一個Redis實例中所有數據庫中的數據。

鑑於上述區別,將Redis理解爲命名空間可能更爲合適。不同的redis數據庫並不適宜存儲不同應用程序的數據,對於多應用的使用,推薦的方式是分別使用不同的Redis實例,由於Redis非常輕量級,一個空Redis實例佔用的內存只有1MB左右,所以不用擔心多個Redis實例會額外佔用很多內存。

基礎命令

KEYS 獲取符合規則的鍵名列表
KEYS pattern

pattern支持通配符:

  • ?,匹配一個字符
  • *,匹配任意個字符
  • [],匹配方括號間的任一字符,可以使用"-"表示範圍,比如a[b-d]可以匹配ab ac ad
  • \x,\爲轉義符
EXISTS 判斷一個鍵是否存在
EXISTS key

如果存在返回(integer) 1,不存在返回(integer) 0。

DEL 刪除一個或多個鍵
DEL key1
DEL key1 key2 ...

返回整數類型表示被刪除的個數。如果鍵不存在,返回0。
DEL命令不支持通配符,但可以組合KEYS命令來實行:

  • 可以結合Linux的管道和xargs命令: redis-cli KEYS “user:*” | xargs redis-cli DEL
  • 直接用KEYS的輸出作爲DEL的參數:redis-cli DEL ‘redis-cli KEYS “user:*”’
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章