Redis 入門之基礎
1.安裝
- redis-windows
- redis服務端下載
- redis客戶端下載
- redis官網
- redis中文網
1.1 Window下安裝
redis-server.exe redis.windows.conf
redis-cli.exe -h 127.0.0.1 -p 6379
1.2 mac下 安裝
brew install redis
brew services start redis
redis-server /usr/local/etc/redis.conf
1.3 配置
ONFIG GET CONFIG_SETTING_NAME
CONFIG GET port
2.啟動和停止Reids
本節將分別介紹開發環境和生產環境中運行Redis的方法以及正確停止Redis的步驟。
在這之前首先需要了解Redis包含的可執行文件有哪些,如下圖:
我們最常使用的兩個程序是redis-server和redis-cli,其中redis-server是Reids的服務器,啟動Redis即運行redis-server;而redis-cli是Redis自帶的Redis命令行客戶端,是學習Redis的重要工具。
2.1 啟動Redis
啟動Redis有直接啟動和通過初始化腳本啟動兩種方式,分別適用於開發環境和生產環境。
2.1.1 直接啟動
直接運行redis-server即可啟動Redis。
$ redis-server
Redis服務器默認會使用6379端口,通過--port參數可以自定義端口號。
$ redis-server --port 6380
2.1.2 停止Reids
考慮到Redis有可能正在將內存中的數據同步到硬盤中,強行終止 Redis 進程可能會導致數據丟失。正確停止Redis的方式應該是向Redis發送SHUTDOWN命令,方法為:
$ redis-cli SHUTDOWN
當Redis收到SHUTDOWN命令後,會先斷開所有客戶端連接,然後根據配置執行持久化,最後完成退出。
另一種方法是使用‘kill Redis 進程的PID’也可以正常結束Reids。
3. Redis命令行客戶端
3.1 發送命令
redis-cli執行時會自動按照默認配置(服務器地址為127.0.0.1,端口號為6379)連接Reids.通過-h和-p參數可以自定義地址和端口號:
redis-cli -h 127.0.0.1 -p 6379
Redis提供了 PING 命令來測試客戶端與Redis的連接是否正常,如果正常會收到回復 PONG,如:
$ redis-cli PING
PONG
第二種方式時不附帶參數運行 redis-cli,這樣會進入交互模式,可以自由輸入命令,例如:
$ redis-cli
redis 127.0.0.1:6379>PING
PONG
redis 127.0.0.1:6379>ECHO hi
"hi"
這種方式在要輸出多條命令時比較方便,也是本書中主要采用的方式。
3.2 命令返回值
命令的返回值有5種類型,對於每種類型redis-cli的展現結果都不同。
1.狀態回復
狀態回復(status reply)是最簡單的一種回復,比如向Redis發送SET命令設置某個鍵的值時,Redis會回復狀態OK表示設置成功。另外之前演示的對PING 命令的回復PONG也是狀態回復。狀態回復直接顯示狀態信息,例如:
redis 127.0.0.1:6379>PING PONG
2.錯誤回復
當出現命令不存在或命令格式有錯誤等情況時Redis會返回錯誤回復(error reply)。錯誤回復以(error)開頭,並在後面跟上錯誤信息。如執行一個不存在的命令:
redis 127.0.0.1:6379>ERRORCOMMEND (error) ERR unknown command ‘ERRORCOMMEND‘
3.整數回復Redis雖然沒有整數類型,但是卻提供了一些用於整數操作的命令,如地增值的 INCR 命令會以整數形式返回遞增後的鍵值。除此之外,一些其他命令會返回整數,如可以獲取當前數據庫中鍵的數量的 DBSIZE 命令等。整數回復(integer reply)以(integer)開頭,並在後面跟上整數數據:
redis 127.0.0.1:6379>INCR foo (integer) 1
4.字符串回復 字符串回復(bulk reply)是最常見的一種回復類型,當請求一個字符串類型鍵的鍵值或一個其他類型鍵中的某個元素時就會得到一個字符串回復。字符串回復以雙引號包裹:
redis 127.0.0.1:6379>GET foo
"1"
特殊情況是當請求的鍵值不存在時會得到一個空結果,顯示為(nil).如:
redis 127.0.0.1:6379>GET noexists
(nil)
5.多行字符串回復
多行字符串回復(multi-bulk reply) 同樣很常見,如當請求一個非字符類型鍵的元素列表時就會收到多行字符串回復。多行字符串回復中的每行字符串都以一個序號開頭,如:
redis 127.0.0.1:6379>KEYS *
1) "bar"
2) "foo"
4. 多數據庫
Redis是一個字典解構的存儲服務器,而實際上一個Redis實例提供了多個用來存儲數據的字典,客戶端可以指定將數據存儲在哪個字典中。
每個數據庫對外都是一個從0開始的遞增數字命名,Redis默認支持16個數據庫,可以通過配置參數 databases 來修改這一數字。客戶端與Redis建立連接後會自動選擇0號數據庫,不過可以隨時使用SELECT 命令更換數據庫,如要選擇 1 號數據庫:
redis 127.0.0.1:6379>SELECT 1
OK
redis 127.0.0.1:6379[1]> GET foo
(nil)
1.首先Redis不支持自定義數據庫的名字,每個數據庫都以編號命名,開發者必須自己記錄哪些數據庫存儲了哪些數據。
2.Redis也不支持為每個數據庫設置不同的訪問密碼。所以一個客戶端要麽可以訪問全部數據庫要麽連一個數據庫也沒有權限訪問。
3.多個數據之間並不是完全隔離的,比如 FLUSHALL 命令可以清空一個 Redis實例中所有數據庫中的數據。
綜上所述,這些數據庫更像是一種命名空間,而不適宜存儲不同應用程序的數據。
比如,可以使用0號數據庫存儲某個應用生產環境中的數據,使用1號數據庫存儲測試環境中的數據。
由於Redis非常輕量級,一個空Redis實例占用的內存只有1MB左右,所以不用擔心多個Redis實例會額外占用很多內存。
Redis 入門之基礎