Redis安裝部署學習筆記
1 概述
目前多數的NoSql資料庫本質上都是索引值對形式,Redis也不例外。作為快取資料庫的一種,和Memcached相比,有以下幾種主要的優點:
(1)速度上,Redis要比Memcached快,這是基於一些Benchmarks的測試結果得出的,而且在記憶體使用量上,Redis突破了實體記憶體限制,可以使用虛擬記憶體;
(2)資料類型比Memcached要多,Redis支援List、Set、SortedSet、HashMap等多種資料結構;
(3)持久化方面,Memcached沒有相應的持久化機制,而Redis有RDB快照和AOF日誌兩種形式結合做持久化,很大限度上保證了資料的持久化和安全性,不像Memcached斷電後全都沒了。
Redis不失為Memcached的一種良好的替代方案。
MongoDB是一種適合做格式化文檔的儲存及查詢的NoSql資料庫,它可以可以用來做海量資料存放區,畢竟是一種硬碟資料庫,和Redis這種快取資料庫沒什麼可比性。網上那麼多討論的,這裡就不說了,見參考文檔1。
Redis也可以在硬碟上儲存資料以及跨節點複製資料,也可以用來做隊列系統,據說GitHub就採用Redis作為其基礎架構。
Ubuntu 14.04下Redis安裝及簡單測試
Redis叢集明細文檔
Ubuntu 12.10下安裝Redis(圖文詳解)+ Jedis串連Redis
Redis系列-安裝部署維護篇
CentOS 6.3安裝Redis
Redis設定檔redis.conf 詳解
2 安裝部署
目前官方發布的最新穩定版是2.8.6,我們就以它為例進行下述的操作及說明。
2.1 Centos安裝部署
安裝步驟如下:
(1)將redis-2.8.6.tar.gz安裝包拷貝到我們的指定目錄下;
(2)使用命令tar -zxvf redis-2.8.6.tar.gz將tar包解壓縮,得到redis-2.8.6目錄;
(3)進入redis-2.8.6目錄,執行make命令進行編譯;
(4)編譯結束之後,配置redis.conf檔案,將“daemonize”屬性設定為“yes”,表示我們會以後台進程形式啟動Redis服務;將“port”屬性設定為指定的連接埠,這裡預設為“6379”;將“logfile”屬性設定為指定的日誌路徑,其餘的屬性可以保持預設。
(5)使用命令src/redis-server ./redis.conf啟動Redis服務,啟動之後,可以在剛才配置的日誌路徑中看到如下類似資訊:
這個帥氣的表徵圖就是Redis的LOGO了。
(6)執行用戶端命令,驗證服務是否正常:
(7)Redis服務停止命令,src/redis-cli shutdown
2.2 conf設定檔說明
剛才在部署的時候,提到了redis.conf這個檔案,這是整個Redis的最重要的設定檔,對於其中的一些參數,做如下說明:
屬性 |
說明 |
daemonize |
如果值是“yes”,則啟動服務的時候是後台守護進程形式,如果值是“no”,則相反 |
pidfile |
指定儲存Redis進程號的檔案路徑 |
port |
指定當前Redis服務的連接埠,預設為6379 |
tcp-backlog |
此參數確定了TCP串連中已完成隊列(完成三向交握之後)的長度, 當然此值必須不大於Linux系統定義的/proc/sys/net/core/somaxconn值,預設是511,而Linux的預設參數值是128。當系統並發量大並且用戶端速度緩慢的時候,可以將這二個參數一起參考設定。 |
timeout |
用戶端和Redis服務端的連線逾時時間,預設是0,表示永不逾時。 |
tcp-keepalive |
如果值非0,單位是秒,表示將周期性的使用SO_KEEPALIVE檢測用戶端是否還處於健康狀態,避免伺服器一直阻塞,官方給出的建議值是60S。 |
loglevel |
Redis總共支援四個層級:debug、verbose、notice、warning。 Debug:記錄很多資訊,用於開發與測試; Varbose:有用的資訊,不像debug會記錄那麼多; Notice:普通的verbose,常用於生產環境; Warning:只有非常重要或者嚴重的資訊會記錄到日誌; 預設是notice層級。 |
logfile |
日誌的儲存路徑 |
databases |
可用的資料庫數,預設值為16,預設資料庫為0,資料庫範圍在0-(database-1)之間,個人覺得DB的概念類似於命名空間 |
save |
儲存資料庫快照集資訊到磁碟,其對應的值有兩個,比如save 300 10表示:300秒內至少有300個key被改變時,觸發儲存資訊到磁碟的事件。 |
stop-writes-on-bgsave-error |
當持久化出現錯誤之後,是否繼續提供寫服務 |
rdbcompression |
持久化到RDB檔案時,是否壓縮,“yes”為壓縮,“no”則反之 |
rdbchecksum |
讀取和寫入的時候是否支援CRC64校正,預設是開啟的 |
dbfilename |
鏡像檔案的名字 |
dir |
當前工作目錄,設定檔和鏡像檔案等都在此目錄下 |
masterauth |
設定訪問master伺服器的密碼 |
slave-serve-stale-data |
當slave伺服器和master伺服器失去串連後,或者當資料正在複製傳輸的時候,如果此參數值設定“yes”,slave伺服器可以繼續接受用戶端的請求,否則,會返回給請求的用戶端如下資訊“SYNC with master in progress” |
slave-read-only |
是否允許slave伺服器節點只提供讀服務 |
repl-disable-tcp-nodelay |
指定向slave同步資料時,是否禁用socket的NO_DELAY選項。若配置為“yes”,則禁用NO_DELAY,則TCP協議棧會合并小包統一發送,這樣可以減少主從節點間的包數量並節省頻寬,但會增加資料同步到slave的時間。若配置為“no”,表明啟用NO_DELAY,則TCP協議棧不會延遲小包的發送時機,這樣資料同步的延時會減少,但需要更大的頻寬。通常情況下,應該配置為no以降低同步延時,但在主從節點間網路負載已經很高的情況下,可以配置為yes。 |
slave-priority |
指定slave的優先順序。在不只1個slave存在的部署環境下,當master宕機時,Redis Sentinel會將priority值最小的slave提升為master。需要注意的是,若該配置項為0,則對應的slave永遠不會自動提升為master。 |
appendonly |
開啟append only 模式之後,redis 會把所接收到的每一次寫操作請求都追加到appendonly.aof 檔案中,當redis 重新啟動時,會從該檔案恢複出之前的狀態。但是這樣會造成appendonly.aof 檔案過大,所以redis 還支援了BGREWRITEAOF 指令,對appendonly.aof 進行重新整理。預設是不開啟的。 |
appendfilename |
預設為appendonly.aof。 |
appendfsync |
設定aof的同步頻率,有三種選擇always、everysec、no,預設是everysec表示每秒同步一次。 |
no-appendfsync-on-rewrite |
指定是否在後台aof檔案rewrite期間調用fsync,預設為no,表示要調用fsync(無論後台是否有子進程在刷盤)。Redis在後台寫RDB檔案或重寫afo檔案期間會存在大量磁碟IO,此時,在某些linux系統中,調用fsync可能會阻塞。 |
auto-aof-rewrite-percentage |
指定Redis重寫aof檔案的條件,預設為100,表示與上次rewrite的aof檔案大小相比,當前aof檔案增長量超過上次afo檔案大小的100%時,就會觸發background rewrite。若配置為0,則會禁用自動rewrite |
auto-aof-rewrite-min-size |
指定觸發rewrite的aof檔案大小。若aof檔案小於該值,即使當前檔案的增量比例達到auto-aof-rewrite-percentage的配置值,也不會觸發自動rewrite。即這兩個配置項同時滿足時,才會觸發rewrite。 |
lua-time-limit |
一個Lua指令碼最長的執行時間,單位為毫秒,如果為0或負數表示無限執行時間,預設為5000 |
notify-keyspace-events |
見參考3,按鍵通知事件 |
aof-rewrite-incremental-fsync |
aof rewrite過程中,是否採取增量檔案同步策略,預設為“yes”。 rewrite過程中,每32M資料進行一次檔案同步,這樣可以減少aof大檔案寫入對磁碟的操作次數 |
更多詳情見請繼續閱讀下一頁的精彩內容: