Redis
是一個(gè)開(kāi)源的key-value
類型的存儲(chǔ)系統(tǒng),大部分?jǐn)?shù)據(jù)存在于內(nèi)存中探遵,所有讀寫速度十分快柳沙。其支持的存儲(chǔ)value
數(shù)據(jù)類型有多種岩灭,如:strings
、hashes
赂鲤、lists
噪径、sets
、sorted sets
等等蛤袒,這些數(shù)據(jù)類型都支持push/pop
熄云、add/remove
等豐富的操作,并且是原子性的妙真。此外,redis
還支持周期性的更新數(shù)據(jù)到磁盤或者追加到記錄文件荚守,來(lái)實(shí)現(xiàn)master-slave
數(shù)據(jù)同步的功能珍德。
在MacOS
系統(tǒng)上安裝redis
的方式有多種,可以用homebrew
一鍵安裝:
$ brew install redis
如果提示權(quán)限問(wèn)題矗漾,請(qǐng)使用sudo brew install redis
锈候,此種方法不再介紹。下面來(lái)介紹一下源碼安裝的方式:
一敞贡、編譯源碼
1. 下載源碼
源碼地址:https://redis.io/
首先需要到redis
官網(wǎng)下載源碼泵琳,然后解壓,如果是在終端里解壓誊役,可以使用如下命令获列,解壓到當(dāng)前目錄:
$ tar -zxf redis-4.0.0
2. 編譯
redis
是C
語(yǔ)言開(kāi)發(fā)的系統(tǒng),需要gcc
的編譯器蛔垢,如果沒(méi)有C
的編譯器击孩,可以用homebrew
安裝一下:
$ brew install gcc
redis
里包含了makefile
,簡(jiǎn)化了編譯步驟鹏漆,直接使用make
就可以編譯:
$ make
二巩梢、安裝redis
在編譯完成后,需要把redis
的命令安裝到/usr/local/bin
目錄中艺玲,可以直接使用make install
命令括蝠,如果希望安裝到指定目錄,需要指定PREFIX
的目錄饭聚。
1. 安裝
make PREFIX=/usr/local/redis-4.0.0 install
如果/usr/local
目錄下沒(méi)有redis-4.0.0
的目錄忌警,需要?jiǎng)?chuàng)建,如果在終端中直接使用mkdir redis-4.0.0
出現(xiàn)提示權(quán)限問(wèn)題若治,則可以在圖形化界面中創(chuàng)建慨蓝,但是需要輸入密碼感混,這樣創(chuàng)建的目錄的owner
用戶是當(dāng)前用戶,而不是root
用戶礼烈,因?yàn)?code>root用戶在后面需要自動(dòng)創(chuàng)建日志文件時(shí)會(huì)遇到權(quán)限的問(wèn)題弧满。
PREFIX=/usr/local/redis-4.0.0
表示指定redis
的安裝目錄
2. redis配置
把源碼目錄下的redis.conf
文件拷貝到/usr/local/redis-4.0.0/etc
目錄下,然后按如下提示修改代碼:
#修改為守護(hù)模式
daemonize yes
#設(shè)置進(jìn)程鎖文件
pidfile /usr/local/redis/redis.pid
#端口
port 6379
#客戶端超時(shí)時(shí)間
timeout 300
#日志級(jí)別
loglevel debug
#日志文件位置
logfile /usr/local/redis/log-redis.log
#設(shè)置數(shù)據(jù)庫(kù)的數(shù)量此熬,默認(rèn)數(shù)據(jù)庫(kù)為0庭呜,可以使用SELECT <dbid>命令在連接上指定數(shù)據(jù)庫(kù)id
databases 8
##指定在多長(zhǎng)時(shí)間內(nèi),有多少次更新操作犀忱,就將數(shù)據(jù)同步到數(shù)據(jù)文件募谎,可以多個(gè)條件配合
#save <seconds> <changes>
#Redis默認(rèn)配置文件中提供了三個(gè)條件:
save 900 1
save 300 10
save 60 10000
#指定存儲(chǔ)至本地?cái)?shù)據(jù)庫(kù)時(shí)是否壓縮數(shù)據(jù),默認(rèn)為yes阴汇,Redis采用LZF壓縮数冬,如果為了節(jié)省CPU時(shí)間,
#可以關(guān)閉該#選項(xiàng)搀庶,但會(huì)導(dǎo)致數(shù)據(jù)庫(kù)文件變的巨大
rdbcompression yes
#指定本地?cái)?shù)據(jù)庫(kù)文件名
dbfilename dump.rdb
#指定本地?cái)?shù)據(jù)庫(kù)路徑
dir /usr/local/redis/db/
#指定是否在每次更新操作后進(jìn)行日志記錄拐纱,Redis在默認(rèn)情況下是異步的把數(shù)據(jù)寫入磁盤,如果不開(kāi)啟哥倔,可能
#會(huì)在斷電時(shí)導(dǎo)致一段時(shí)間內(nèi)的數(shù)據(jù)丟失秸架。因?yàn)?redis本身同步數(shù)據(jù)文件是按上面save條件來(lái)同步的,所以有
#的數(shù)據(jù)會(huì)在一段時(shí)間內(nèi)只存在于內(nèi)存中
appendonly no
#指定更新日志條件咆蒿,共有3個(gè)可選值:
#no:表示等操作系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤(快)
#always:表示每次更新操作后手動(dòng)調(diào)用fsync()將數(shù)據(jù)寫到磁盤(慢东抹,安全)
#everysec:表示每秒同步一次(折衷,默認(rèn)值)
appendfsync everysec
三沃测、使用redis
在redis
的官網(wǎng)上面有教程缭黔,可以參考學(xué)習(xí)。
啟動(dòng)redis
服務(wù)(在redis-4.0.0
目錄下):
$ ./bin/redis-server etc/redis.conf
啟動(dòng)redis
客戶端:
$ ./bin/redis-cli
另外芽突,我們也可以查看redis
的日志文件log-redis.log
试浙,可以看到redis
的操作變化。
$ tail -f log-redis.log
redis
的環(huán)境搭建如上所示寞蚌,在如今的服務(wù)器應(yīng)用開(kāi)發(fā)過(guò)程中田巴,用redis
做緩存的應(yīng)用還是十分廣泛的,文中不足之處挟秤,還望互相交流學(xué)習(xí)壹哺。
參考資料