Redis
是一個開源的key-value
類型的存儲系統,大部分數據存在於內存中,全部讀寫速度十分快。其支持的存儲value
數據類型有多種,如:strings
、hashes
、lists
、sets
、sorted sets
等等,這些數據類型都支持push/pop
、add/remove
等豐富的操做,而且是原子性的。此外,redis
還支持週期性的更新數據到磁盤或者追加到記錄文件,來實現master-slave
數據同步的功能。html
在MacOS
系統上安裝redis
的方式有多種,能夠用homebrew
一鍵安裝:git
$ brew install redis
若是提示權限問題,請使用github
sudo brew install redis
此種方法再也不介紹。下面來介紹一下源碼安裝的方式:redis
1. 下載源碼數據庫
源碼地址:https://redis.io/緩存
首先須要到redis
官網下載源碼,而後解壓,若是是在終端裏解壓,可使用以下命令,解壓到當前目錄:安全
$ tar -zxf redis-4.0.0
2. 編譯服務器
redis
是C
語言開發的系統,須要gcc
的編譯器,若是沒有C
的編譯器,能夠用homebrew
安裝一下:app
$ brew install gcc
redis
裏包含了makefile
,簡化了編譯步驟,直接使用make
就能夠編譯:異步
$ make
在編譯完成後,須要把redis
的命令安裝到/usr/local/bin
目錄中,能夠直接使用make install
命令,若是但願安裝到指定目錄,須要指定PREFIX
的目錄。
1. 安裝
make PREFIX=/usr/local/redis-4.0.0 install
若是/usr/local
目錄下沒有redis-4.0.0
的目錄,須要建立,若是在終端中直接使用mkdir redis-4.0.0
出現提示權限問題,則能夠在圖形化界面中建立,可是須要輸入密碼,這樣建立的目錄的owner
用戶是當前用戶,而不是root
用戶,由於root
用戶在後面須要自動建立日誌文件時會遇到權限的問題。
PREFIX=/usr/local/redis-4.0.0
表示指定redis
的安裝目錄
2. redis配置
把源碼目錄下的redis.conf
文件拷貝到/usr/local/redis-4.0.0/etc
目錄下,而後按以下提示修改代碼:
#修改成守護模式 daemonize yes #設置進程鎖文件 pidfile /usr/local/redis/redis.pid #端口 port 6379 #客戶端超時時間 timeout 300 #日誌級別 loglevel debug #日誌文件位置 logfile /usr/local/redis/log-redis.log #設置數據庫的數量,默認數據庫爲0,可使用SELECT <dbid>命令在鏈接上指定數據庫id databases 8 ##指定在多長時間內,有多少次更新操做,就將數據同步到數據文件,能夠多個條件配合 #save <seconds> <changes> #Redis默認配置文件中提供了三個條件: save 900 1 save 300 10 save 60 10000 #指定存儲至本地數據庫時是否壓縮數據,默認爲yes,Redis採用LZF壓縮,若是爲了節省CPU時間, #能夠關閉該#選項,但會致使數據庫文件變的巨大 rdbcompression yes #指定本地數據庫文件名 dbfilename dump.rdb #指定本地數據庫路徑 dir /usr/local/redis/db/ #指定是否在每次更新操做後進行日誌記錄,Redis在默認狀況下是異步的把數據寫入磁盤,若是不開啓,可能 #會在斷電時致使一段時間內的數據丟失。由於 redis自己同步數據文件是按上面save條件來同步的,因此有 #的數據會在一段時間內只存在於內存中 appendonly no #指定更新日誌條件,共有3個可選值: #no:表示等操做系統進行數據緩存同步到磁盤(快) #always:表示每次更新操做後手動調用fsync()將數據寫到磁盤(慢,安全) #everysec:表示每秒同步一次(折衷,默認值) appendfsync everysec
在redis
的官網上面有教程,能夠參考學習。
啓動redis
服務(在redis-4.0.0
目錄下):
$ ./bin/redis-server etc/redis.conf
啓動redis
客戶端:
$ ./bin/redis-cli
另外,咱們也能夠查看redis
的日誌文件log-redis.log
,能夠看到redis
的操做變化。
$ tail -f log-redis.log
redis
的環境搭建如上所示,在現在的服務器應用開發過程當中,用redis
作緩存的應用仍是十分普遍的,文中不足之處,還望互相交流學習。參考資料