Redis入門(1) - 使用Cli

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

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

Redis數據庫中的全部數據都存儲在內存中。因爲內存的讀寫速度遠快於硬盤,所以Redis在性能上對比其餘基於硬盤存儲的數據庫有很是明顯的優點,在一臺普通的筆記本電腦上,Redis能夠在一秒內讀寫超過十萬個鍵值。同時Redis也支持持久化數據到硬盤。docker

在Docker中使用Redis

在Docker中學習和使用Redis很是方便,免去了直接在機器上安裝:數據庫

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

redis的默認監聽的端口爲6379,而後就能夠進入redis容器了:bash

$ 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,這樣會進入交互模式,而後直接輸入命令:markdown

$ 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:*"'
相關文章
相關標籤/搜索