* [在Docker中使用Redis] * [Redis-Cli] * [命令的返回值類型] * [Redis中的多數據庫] * [基礎命令]
Redis是REmote DIctionary Server(遠程字典服務器)的縮寫,它以字典結構存儲數據,並容許其餘應用經過TCP協議讀寫字典中的內容。redis
Redis數據庫中的全部數據都存儲在內存中。因爲內存的讀寫速度遠快於硬盤,所以Redis在性能上對比其餘基於硬盤存儲的數據庫有很是明顯的優點,在一臺普通的筆記本電腦上,Redis能夠在一秒內讀寫超過十萬個鍵值。同時Redis也支持持久化數據到硬盤。docker
在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發送一系列命令。
在前面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執行命令後的返回值有下面幾類:學習
狀態回覆(status reply)
狀態回覆是最簡單的一種回覆,好比向Redis發送SET命令設置某個鍵的值時,Redis會回覆狀態OK表示設置成功。以前執行PING命令收到的PONG也屬於狀態回覆。測試
錯誤回覆(error reply)
命令執行失敗會返回錯誤回覆,這類回覆以(error)開頭。命令行
整數回覆(integer reply)
對於相似增長鍵值、獲取鍵數量等命令會返回整數結果,整數回覆與(integer)開頭。
字符串回覆(bulk reply)
字符串回覆是最多見的一種回覆類型,當請求一個字符串類型鍵的鍵值或一個其餘類型鍵中的某個元素時就會獲得一個字符串回覆。字符串回覆以雙引號包裹。但若是鍵不存在時會返回空,用(nil)表示。
多行字符串回覆(multi-bulk reply)
這種回覆也比較常見,好比當請求一個非字符串類型鍵的元素列表時就會收到多行字符串回覆,多行字符串回覆中的每行字符串都以一個序號開頭,如獲取全部的鍵:
redis 127.0.0.1:6379 > KEYS * 1) "k1" 2) "k2"
一個Redis實例提供了多個用來存儲數據的字典,客戶端能夠指定將數據存儲在哪一個字典中。這與在一個關係數據庫實例中能夠建立多個數據庫相似,因此能夠將其中的每一個字典都理解成一個獨立的數據庫。
Redis默認支持16個數據庫,用數字命名,分別爲0-15。數據庫的數量能夠經過配置來修改。客戶端與Redis創建鏈接後會自動選擇0號數據庫,能夠自行切換,切換到1號數據庫的命令爲:
SELECT 1
Redis中的數據庫與咱們常規理解的關係型數據庫有很大的區別:
鑑於上述區別,將Redis理解爲命名空間可能更爲合適。不一樣的redis數據庫並不適宜存儲不一樣應用程序的數據,對於多應用的使用,推薦的方式是分別使用不一樣的Redis實例,因爲Redis很是輕量級,一個空Redis實例佔用的內存只有1MB左右,因此不用擔憂多個Redis實例會額外佔用不少內存。
KEYS pattern
pattern支持通配符:
EXISTS key
若是存在返回(integer) 1,不存在返回(integer) 0。
DEL key1 DEL key1 key2 ...
返回整數類型表示被刪除的個數。若是鍵不存在,返回0。
DEL命令不支持通配符,但能夠組合KEYS命令來實行: