2019獨角獸企業重金招聘Python工程師標準>>>
Redis之父Salvatore Sanfilippo于2009年將Redis開源。VMware公司從2010年開始贊助Redis的開發,Salvatore Sanfilippo和Pieter Noordhuis(另一名主要的代碼貢獻者)同年加入VMware,全職開發Redis。Redis的代碼托管在GitHub上。2015年4月,Redis發布3.0.0的正式版本。
Redis = REmote DIctionary Server(遠程字典服務器)。Redis數據庫中的所有數據都存儲在內存中,不過Redis提供了對持久化的支持,即可以將內存中的數據異步寫入到硬盤中,同時不影響繼續提供服務。
Redis雖然是作為數據庫開發的,但由于其提供了豐富的功能,越來越多的人將其用作緩存系統。Redis可以為每個鍵設置生存時間(Time To Live,TTL),生存時間到期后鍵會自動被刪除。這一功能配合出色的性能讓Redis可以作為緩存系統來使用。作為緩存系統,Redis還可以限定數據占用的最大內存空間,在數據達到空間限制后可以按照一定的規則自動淘汰不需要的鍵。
安裝Redis過程略去不表。
Redis的可執行文件說明:
文件名 | 說明 |
redis-server | Redis服務器 |
redis-cli | Redis命令行客戶端 |
redis-benchmark | Redis性能測試工具 |
redis-check-aof | AOF文件修復工具 |
redis-check-dump | RDB文件檢查工具 |
redis-sentinel | Sentinel服務器(2.8版) |
1. 啟動Redis:
直接在命令行運行redis-server即可啟動Redis。Redis服務器默認會使用6379端口,通過--port參數可以自定義端口號:
$ redis-server --port 6380
2. 停止Redis:
考慮到Redis有可能正在將內存中的數據同步到硬盤中,強行終止Redis進程可能會導致數據丟失。正確停止Redis的方式應該是向Redis發送SHUTDOWN命令:
$ redis-cli SHUTDOWN
當Redis收到SHUTDOWN命令后,會先斷開所有客戶端連接,然后根據配置執行持久化,最后完成退出。
3. Redis命令行客戶端發送命令:
通過redis-cli向Redis發送命令有兩種方式:
方式 | 說明 |
將命令作為redis-cli的參數執行 | ![]() |
不附帶參數運行redis-cli,這樣會進入交互模式 | ![]() |
4. 命令返回值:
在大多數情況下,執行一條命令后我們往往會關心命令的返回值。命令的返回值有5種類型,對于每種類型redis-cli的展現結果都不同。
類型 | 說明 |
狀態回復 | 最簡單的一種回復。比如向Redis發送SET命令設置某個鍵的值時,Redis會回復狀態OK表示設置成功。對ping命令的回復PONG也是狀態回復。狀態回復直接顯示狀態信息。![]() |
錯誤回復 | 當出現命令不存在或命令格式有錯誤等情況時Redis會返回錯誤回復。錯誤回復以error開頭,并在后面跟上錯誤信息。如執行一個不存在的命令:![]() |
整數回復 | Redis雖然沒有整數類型,但是卻提供了一些用于整數操作的命令,如遞增鍵值的INCR命令會以整數形式返回遞增后的鍵值。整數回復以(integer)開頭,并在后面跟上整數數據: |
字符串回復 | 最常見的一種回復類型,當請求一個字符串類型鍵的鍵值或一個其他類型鍵的某個元素時就會得到一個字符串回復。字符串回復以雙引號包裹:![]() ![]() |
多行字符串回復 | 當請求一個非字符串類型鍵的元素列表時就會收到多行字符串回復。多行字符串回復中的每行字符串都以一個序號開頭:![]() |
5. 配置:
我們可以通過redis-server的啟動參數port設置redis的端口號,除此之外redis還支持其他配置選項,如是否開啟持久化、日志級別等。
由于可以配置的選項較多,通過啟動參數設置這些選項并不方便,所以redis支持通過配置文件來設置這些選項。
啟用配置文件的方法是在啟動時將配置文件的路徑作為啟動參數傳遞給redis-server:
通過啟動參數傳遞同名的配置選項會覆蓋配置文件中相應的參數:
除此之外,還可以在redis運行時通過CONFIG SET命令在不重新啟動redis的情況下動態修改部分redis的配置:
并不是所有的配置都可以使用CONFIG SET命令修改。
在運行時也可以使用CONFIG GET命令redis當前的配置情況:
6. 多數據庫:
?