Redis簡(jiǎn)介
Redis是一個(gè)開(kāi)源的柿隙、高性能的顷窒、基于鍵值對(duì)的緩存與存儲(chǔ)系統(tǒng)姊途,通過(guò)提供多種鍵值數(shù)據(jù)類(lèi)型來(lái)適應(yīng)不同場(chǎng)景下的緩存與存儲(chǔ)需求仍侥。同時(shí)Redis的諸多高層級(jí)功能使其可以勝任消息隊(duì)列、任務(wù)隊(duì)列等不同角色捉偏。
Redis的特性
1.鍵值數(shù)據(jù)類(lèi)型
- 字符串類(lèi)型
- 散列類(lèi)型
- 列表類(lèi)型
- 集合類(lèi)型
- 有序集合類(lèi)型
2.內(nèi)存存儲(chǔ)于持久化
Redis數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都是存儲(chǔ)在內(nèi)存中倒得。由于內(nèi)存的讀寫(xiě)速度遠(yuǎn)快于硬盤(pán),因此Redis在性能上對(duì)比其他基于硬盤(pán)存儲(chǔ)的數(shù)據(jù)庫(kù)有非常明顯的優(yōu)勢(shì)夭禽,在一臺(tái)普通的筆記本電腦上霞掺,Redis可以一秒內(nèi)讀寫(xiě)超過(guò)10萬(wàn)個(gè)鍵值。
3.功能豐富
Redis雖然是作為數(shù)據(jù)庫(kù)開(kāi)發(fā)的驻粟,但大部分人還是將其作為緩存根悼、隊(duì)列系統(tǒng)來(lái)用
Redis和Memcached的對(duì)比:在性能上Redis是單線(xiàn)程的凶异,而Memcached支持多線(xiàn)程蜀撑,雖然在多核服務(wù)器上后者的性能理論相對(duì)高一些,但Redis的性能非常優(yōu)異剩彬,這不會(huì)成為他的瓶頸酷麦。在Redis3.0中,加入了對(duì)集群的支持喉恋,Memcached不在具有優(yōu)勢(shì)
4.簡(jiǎn)單穩(wěn)定
安裝Redis
因?yàn)槲矣玫氖荕BP沃饶,這里我只介紹OS X里的安裝方法。通過(guò)homebrew來(lái)安裝Redis.
1.首先安裝HomeBrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
如果已經(jīng)安裝homebrew轻黑,執(zhí)行 homebrew update來(lái)更新homebrew糊肤,以便安裝最新的redis.
2.通過(guò)Homebrew安裝Redis
在終端中輸入下面代碼
$ brew install redis
啟動(dòng)和停止Redis
1.啟動(dòng)
終端中輸入如下命令,默認(rèn)使用6379端口氓鄙,即可啟動(dòng)Redis
$ redis-server
啟動(dòng)效果:
也可通過(guò)--port參數(shù)自定義端口號(hào)
$ redis-server --port 6380
6379是手機(jī)鍵盤(pán)上MERZ對(duì)應(yīng)的數(shù)字馆揉,MERZ是一名意大利歌女的名字
2.停止
強(qiáng)行終止Redis進(jìn)程可能會(huì)導(dǎo)致數(shù)據(jù)丟失,正確做法是 向Redis發(fā)送 SHUTDOWN 命令:
$ redis-cli SHUTDOWN
Redis收到SHUTDOWN命令后抖拦,會(huì)先斷開(kāi)所有的客戶(hù)端連接升酣,然后根據(jù)配置執(zhí)行持久化,最后完成退出态罪。使用kill Redis進(jìn)程的PID也可以正常關(guān)閉Redis噩茄,效果與SHUTDOWN一樣。
配置
啟用配置文件的方法是在啟動(dòng)時(shí)將配置文件的路徑作為啟動(dòng)參數(shù)傳遞給redis-server,如:
$ redis-server /path/to/redis.conf
Redis提供了一個(gè)配置文件的模板redis.conf复颈,位于源代碼目錄的根目錄中绩聘。
多數(shù)據(jù)庫(kù)
Redis默認(rèn)支持16個(gè)數(shù)據(jù)庫(kù),可通過(guò)配置參數(shù)databases來(lái)修改這一數(shù)字≡淦校客戶(hù)端與Redis建立連接后自動(dòng)選擇0號(hào)數(shù)據(jù)庫(kù)驯遇,可通過(guò)SELECT命令隨時(shí)更換數(shù)據(jù)庫(kù):
redis> SELECT 1
OK
redis [1]>
Redis不支持自定義數(shù)據(jù)庫(kù)名字,每個(gè)數(shù)據(jù)庫(kù)都以編號(hào)命名蓄髓。Redis不支持為每個(gè)數(shù)據(jù)庫(kù)設(shè)置不同的訪(fǎng)問(wèn)密碼叉庐。所以一個(gè)客戶(hù)端要么訪(fǎng)問(wèn)全部數(shù)據(jù)庫(kù),要么一個(gè)數(shù)據(jù)庫(kù)也沒(méi)有權(quán)限会喝。多個(gè)數(shù)據(jù)庫(kù)之間并不是完全隔離陡叠,FLUSHALL命令可以清空Redis實(shí)例中所有數(shù)據(jù)庫(kù)中的數(shù)據(jù)。由于Redis非常輕量級(jí)肢执,一個(gè)空Redis實(shí)例占用的內(nèi)存只有1MB左右枉阵,所以不用擔(dān)心多個(gè)Redis實(shí)例會(huì)額外占用很多內(nèi)存。
參考書(shū)籍:《Redis入門(mén)指南(第二版)》李子驊