Redis的配置文件涉及Redis啓動運行的一些重要參數,也是Redis哨兵和Redis集羣配置相關依賴的重要文件。熟悉redis.config文件的配置是很是有必要的。redis
下面來簡單說明一下redis.conf中的主要配置:算法
①include:包含數據庫
相似於Spring的配置文件,能夠經過includes包含其它的配置文件,而redis.conf做爲總的文件安全
②network:網絡配置服務器
經常使用的配置修改以下:網絡
bind 127.0.0.1 #修改綁定的ip
protected-mode yes #是否受保護的模式,默認爲是
port 6379 #默認端口修改
③general:通用配置app
主要經常使用的配置修改以下:dom
daemonize yes #以守護進程的方式運行,默認是no,須要手動修改成yes
pidfile /var/run/redis_6379.pid #若是之後臺方式運行,就須要指定一個pid文件
#日誌級別配置
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing) #debug,測試開發階段使用
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably) #notice,默認在生產環境使用
# warning (only very important / critical messages are logged) #警告級別
loglevel notice異步
logfile "" #配置生成的文件名,能夠修改存放地址信息工具
databases 16 #配置數據庫的數量,默認是16個
always-show-logo yes #默認顯示LOGO信息
④SNAPSHOTTING快照:
主要用於持久化操做,在規定的時間內,執行了多少次操做,則會持久化到.rdb文件或者.aof文件。
redis是內存數據庫,若是沒有持久化配置,則斷點即失。
#若是900s之內至少有1個key進行了修改,那麼就進行持久化操做
save 900 1
#若是300s之內至少有10個key進行了修改,那麼就進行持久化操做
save 300 10
#若是60s之內至少有10000個key進行了修改,那麼就進行持久化操做
save 60 10000
#若是持久化出錯,是否還須要redis繼續工做
stop-writes-on-bgsave-error yes
#是否壓縮rdb文件,須要消耗一些cpu資源
rdbcompression yes
#保存rdb文件的時候進行錯誤的檢驗
rdbchecksum yes
#rdb文件保存的目錄,默認在當前目錄下
dir ./
⑤security安全:
能夠進行redis登錄的密碼設置,通常使用命令行命令進行設置:
127.0.0.1:6379> config get requirepass #獲取redis的密碼 1) "requirepass" 2) "" 127.0.0.1:6379> config set requirepass "123456" #設置redis的密碼 OK 127.0.0.1:6379> config get requirepass (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 #登陸驗證密碼 OK
⑥限制CLIENTS、MEMORY MANAGEMENT
設置能鏈接上redis的最大客戶端數量
maxclients 10000 #設置能鏈接上redis的最大客戶端的數量
maxmemory <bytes> #設置redis配置最大的內存容量
maxmemory-policy noeviction #內存到達上限以後的處理策略
volatile-lru:只對設置了過時時間的key進行LRU(默認值)
allkeys-lru : 刪除lru算法的key
volatile-random:隨機刪除即將過時key
allkeys-random:隨機刪除
volatile-ttl : 刪除即將過時的
noeviction : 永不過時,返回錯誤
⑦APPEND ONLY MODE模式,aof配置:
appendonly no #默認是不開啓aof模式的,默認是使用rdb持久化方式的,大部分狀況下,rdb徹底夠用
appendfilename "appendonly.aof" #持久化文件的名字
# appendfsync always #每次修改都會同步sync,消耗性能
appendfsync everysec #每秒執行一次sync,可能會丟失1s的數據
# appendfsync no #不執行同步,操做系統本身同步數據,性能最快
Redis 是內存數據庫,若是不將內存中的數據庫狀態保存到磁盤,那麼一旦服務器進程退出,服務器中 的數據庫狀態也會消失。因此 Redis 提供了持久化功能!
Redis的持久化提供了兩種持久化方式:RDB與AOF方式。
RBD持久化方式會在指定的時間間隔內將內存中的數據集快照寫入到磁盤,也就是Snapshot快照方式。它恢復時是將快照文件直接讀到內存裏。
Redis會單首創建(fork)一個子進程來進行持久化,會先將數據寫入到一個臨時文件中,待持久化過程 都結束了,再用這個臨時文件替換上次持久化好的文件。整個過程當中,主進程是不進行任何IO操做的。 這就確保了極高的性能。若是須要進行大規模數據的恢復,且對於數據恢復的完整性不是很是敏感,那 RDB方式要比AOF方式更加的高效。RDB的缺點是最後一次持久化後的數據可能丟失(redis服務宕機)。
RDB是咱們默認的持久化方式,通常狀況下咱們不須要修改這個配置。
RDB方式保存的文件是dump.rdb文件。
觸發機制:
1.save的規則知足的狀況下,會自動觸發rdb規則。
2.執行flushall命令,也會觸發rdb規則。
3.退出redis,也會產生rdb文件。系統在備份時會自動生成一個dump.rdb文件。
恢復RDB文件數據:
1.將備份文件(dump.rdb)移動到redis安裝目錄並啓動服務便可;
2.查看文件存放目錄:
127.0.0.1:6379> config get dir 1) "dir" 2) "/usr/local/bin"
RDB持久化優缺點:
優勢:
1.適合作大規模的數據恢復;
2.對數據完整性和一致性要求不高;
缺點:
1.在必定間隔時間作一次備份,因此若是redis之外宕機的話,就會丟失掉最後一次快照後的全部修改;
2.Fork父進程的時候,內存中的數據被克隆了一份,須要考慮內存空間被佔用。
Redis的AOF保存形式會以日誌的形式來記錄每一個寫操做,將Redis執行過的全部指令記錄下來(讀操做不記錄),只許追加文件但不能夠改寫文件,redis啓動之初會讀取該文件從新構建數據,換言之,redis重啓的話就根據日誌文件的內容將寫指令從前到後執行一次以完成數據的恢復工做。
Redis配置AOF的方式:
默認是不開啓AOF的,咱們須要手動進行配置,將appendonly no改成yes就開啓了aof,重啓以後redis就生效了。
若是過程當中aof有錯位或者異常損壞,這時redis是啓動不了的,咱們須要修復aof這個文件。而redis給咱們提供了一個工具:
redis-check-aof --fix
#切換到redis-conf目錄:
redis-check-aof --fix appendonly.aof
AOF文件相關配置項:
appendonly no # 是否以append only模式做爲持久化方式,默認使用的是rdb方式持久化(no),啓用aof須要設置爲yes appendfilename "appendonly.aof" # appendfilename AOF 文件名稱 appendfsync everysec # appendfsync aof持久化策略的配置 # no表示不執行fsync,由操做系統保證數據同步到磁盤,速度最快。 # always表示每次寫入都執行fsync,以保證數據同步到磁盤。 # everysec表示每秒執行一次fsync,可能會致使丟失這1s數據。
No-appendfsync-on-rewrite #重寫時是否能夠運用Appendfsync,用默認no便可,保證數據安全性 Auto-aof-rewrite-min-size # 設置重寫的基準值 Auto-aof-rewrite-percentage #設置重寫的基準值
AOF優勢和缺點:
優勢:
1.每修改同步:appendfsync always 同步持久化,每次發生數據變動會被當即記錄到磁盤,性能較差 但數據完整性比較好;
2.每秒同步:appendfsync everysec異步操做,每秒記錄,若是一秒宕機,有數據丟失;
缺點:
1.相同數據集的數據而言,aof 文件要遠大於 rdb文件,恢復速度慢於 rdb。
2.Aof 運行效率要慢於 rdb,每秒同步策略效率較好,不一樣步效率和rdb相同。