* [在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執行命令后的回傳值有下面幾類:
-
狀態回復(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實體提供了多個用來存盤資料的字典,客戶端可以指定將資料存盤在哪個字典中,這與在一個關系資料庫實體中可以創建多個資料庫類似,所以可以將其中的每個字典都理解成一個獨立的資料庫,
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:*"'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/2461.html
標籤:NoSQL
下一篇:Redis學習筆記(十) 客戶端
