Redis配置文件總結

(1)redis.conf 配置文件

1.daemonize no

默認情況下,redis不是在後臺運行的,如果需要在後臺運行,把該項的值更改爲yes;

2. pidfile /var/run/redis.pid
當redis在後臺運行的時候,Redis默認會把pid文件放在/var/run/redis.pid,你可以配置到其他地址。當運行多個redis
服務時,需要指定不同的pid文件和端口。

3. port 6379
指定redis運行的端口

4. timeout 0
設置客戶端連接時的超時時間,單位爲秒。當客戶端在這段時間內沒有發出任何指令,那麼server端關閉該連接。0爲關
閉該設置。

5. loglevel notice
server日誌級別,合法值:debug,verbose,notice,warning 默認爲notice
debug適合開發環境,客戶端操作信息都會輸出日誌
verbose輸出一些相對有用的信息,目前效果不明
notice適合生產環境
warning異常信息

6.logfile
指定Redis日誌記錄方式,默認值爲stdout,表示打印在命令行終端的窗口上,也可設爲/dev/null屏蔽日誌

7. maxclients 128
限制同時連接的客戶數量。
當連接數超過這個值時,redis 將不再接收其他連接請求,客戶端嘗試連接時將收到 error 信息

8. maxmemory <bytes>
設置redis能夠使用的最大內存。
達到最大內存設置後,Redis會先嚐試清除已到期或即將到期的Key(設置過expire信息的key)
在刪除時,按照過期時間進行刪除,最早將要被過期的key將最先被刪除
如果已到期或即將到期的key刪光,仍進行set操作,那麼將返回錯誤

此時redis將不再接收寫請求,只接收get請求。
maxmemory的設置比較適合於把redis當作於類似memcached 的緩存來使用

9. maxmemory-policy
當內存達到最大值的時候Redis會選擇刪除哪些數據?有五種方式可供選擇
##
volatile-lru -> 利用LRU算法移除設置過過期時間的key (LRU:最近使用 Least Recently Used )
# allkeys-lru -> 利用LRU算法移除任何key
# volatile-random -> 移除設置過過期時間的隨機key
# allkeys->random -> remove a random key, any key
# volatile-ttl -> 移除即將過期的key(minor TTL)
# noeviction -> 不移除任何可以,只是返回一個寫錯誤
##
注意:對於上面的策略,如果沒有合適的key可以移除,當寫的時候Redis會返回一個錯誤
##
寫命令包括: set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
##
默認是:
# maxmemory-policy volatile-lru

10. syslog-enabled no
'syslog-enabled'設置爲yes會把日誌輸出到系統日誌,默認是no

11. syslog-facility local0
指定syslog 設備(facility), 必須是USER或者LOCAL0到LOCAL7.


SLOWLOG (日誌)

1. slowlog-log-slower-than 10000
Redis slow log用來記錄超過指定執行時間的查詢。執行時間不包括I/O計算比如連接客戶端,返回結果等,只是命令執
行時間
可以通過兩個參數設置slow log:一個是告訴Redis執行超過多少時間被記錄的參數slowlog-log-slower-than(毫秒),另
一個是slow log 的長度。當一個新命令被記錄的時候最早的命令將被從隊列中移除
負數則關閉slow log,0則會導致每個命令都被記錄


2. slowlog-max-len
對日誌長度沒有限制,只是要注意它會消耗內存
可以通過 SLOWLOG RESET 回收被慢日誌消耗的內存


Snapshotting(快照)

1. save
save ,用來描述”在多少秒期間至少多少個變更操作”觸發snapshot
snapshot最終將生成新的dump.rdb文件
save “”用來禁用snapshot功能
例如save 300 1表示5分鐘內至少一個key變更,觸發snapshot


2. rdbcompression yes
是否啓用rdb文件壓縮手段,默認爲yes.
壓縮可能需要額外的cpu開支,不過這能夠有效的減小rdb文件的大小,有利於存儲/備份/傳輸/數據恢復.


3. rdbchecksum yes
是否對rdb文件使用CRC64校驗和,默認爲”yes”,那麼每個rdb文件內容的末尾都會追加CRC校驗和.
對於其他第三方校驗工具,可以很方便的檢測文件的完整性

4. dbfilename dump.rdb
鏡像備份文件的文件名

# The filename where to dump the DB
dbfilename dump.rdb

5. dir ./
指定rdb/AOF文件的目錄位置,只能爲文件夾不能爲文件

# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

   AOF

1. appendonly no
#默認情況下,Redis會異步的把數據保存到硬盤。如果你的應用場景允許因爲系統崩潰等極端情況而導致最新數據丟失#
的話,那這種做法已經很ok了。否則你應該打開‘append only’模式,開啓這種模式後,Redis會在#appendonly.aof
文件中添加每一個寫操作,這個文件會在Redis啓動時被讀取來在內存中重新構建數據集。
#注意:如果你需要,你可以同時開啓‘append only’模式和異步dumps模式(你需要註釋掉上面的‘save’表達式
來禁#止dumps),這種情況下,Redis重建數據集時會優先使用appendonly.aof而忽略dump.rdb


2. appendfilename appendonly.aof
AOF文件名稱 (默認: "appendonly.aof")


3. appendfsync everysec
# 調用fsync()函數通知操作系統立刻向硬盤寫數據
# Redis支持三種同步AOF文件的策略:
#
# no:不fsync, 只是通知OS可以flush數據了,具體是否flush取決於OS.性能更好.
# always: 每次寫入append only 日誌文件後都會fsync . 性能差,但很安全.
# everysec: 沒間隔1秒進行一次fsync. 折中.
#
# 默認是"everysec",按照速度和安全折中這是最好的。
# 如果想讓Redis能更高效的運行,你也可以設置爲"no",讓操作系統決定什麼時候去執行
# 或者相反想讓數據更安全你也可以設置爲"always"
#
# 如果不確定就用 "everysec".


4. no-appendfsync-on-rewrite no
# AOF策略設置爲always或者everysec時,後臺處理進程(後臺保存或者AOF日誌重寫)會執行大量的I/O操作
# 在某些Linux配置中會阻止過長的fsync()請求。注意現在沒有任何修復,即使fsync在另外一個線程進行處理
#
# 爲了減緩這個問題,可以設置下面這個參數no-appendfsync-on-rewrite

5. auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# append only 文件的自動重寫
# 當AOF 日誌文件即將增長到指定百分比時,Redis可以通過調用BGREWRITEAOF 來自動重寫append only文件。
# 它是這麼幹的:Redis會記住最近一次重寫後的AOF 文件size。然後它會把這個size與當前size進行比較,如果當前size
比指定的百分比大,就會觸發重寫。同樣,你需要指定AOF文件被重寫的最小size,這對避免雖然百分比達到了, 但是實
際上文件size還是很小(這種情況沒有必要重寫)卻導致AOF文件重寫的情況很有用。
# auto-aof-rewrite-percentage 設置爲 0 可以關閉AOF重寫功能

高級配置


1. hash-max-zipmap-entries 512
hash-max-zipmap-value 64
redis 2.0後引入了 hash 數據結構。
當hash中包含超過指定元素個數並且最大的元素沒有超過臨界時,
# hash將以一種特殊的編碼方式(大大減少內存使用)來存儲,這裏可以設置這兩個臨界值
# Redis Hash對應Value內部實際就是一個HashMap,實際這裏會有2種不同實現,
# 這個Hash的成員比較少時Redis爲了節省內存會採用類似一維數組的方式來緊湊存儲,而不會採用真正的HashMap結
構,對應的value redisObject的encoding爲zipmap,
# 當成員數量增大時會自動轉成真正的HashMap,此時encoding爲ht。


2. activerehashing yes
是否重置Hash表
設置成yes後redis將每100毫秒使用1毫秒CPU時間來對redis的hash表重新hash,可降低內存的使用
當使用場景有較爲嚴格的實時性需求,不能接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置爲no。
如果沒有這麼嚴格的實時性要求,可以設置爲 yes,以便能夠儘可能快的釋放內存


3. list-max-ziplist-entries 512
list-max-ziplist-value 64
list 數據類型多少節點以下會採用去指針的緊湊存儲格式。
list 數據類型節點值大小小於多少字節會採用緊湊存儲格式。


4. set-max-intset-entries 512
set數據類型內部數據如果全部是數值型,且包含多少節點以下會採用緊湊格式存儲。


5. zset-max-ziplist-entries 128
zset-max-ziplist-value 64
zsort 數據類型多少節點以下會採用去指針的緊湊存儲格式。
zsort 數據類型節點值大小小於多少字節會採用緊湊存儲格式。

Replication(複製)

1. slaveof
將當前server做爲slave,併爲其指定master信息.
slaveof <masterip> <masterport> 當本機爲從服務時,設置主服務的IP及端口

# slaveof <masterip> <masterport>
slaveof 11.41.8.209 63789


2. masterauth
以認證的方式連接到master。 如果master中使用了”密碼保護”,slave必須交付正確的授權密碼,才能連接成功。
“requirepass”配置項指定了當前server的密碼。
此配置項中值需要和master機器的”requirepass”保持一致

 masterauth tinywanredis
redis在真實環境中不可以誰想訪問就訪問,所以,必須要設置密碼,修改redis.conf文件配置 

# requirepass foobared去掉註釋,foobared改爲自己的密碼。


3. slave-serve-stale-data yes
如果當前server是slave,那麼當slave與master失去通訊時,是否繼續爲客戶端提供服務,”yes”表示繼續,”no”表示終止.
在”yes”情況下,slave繼續向客戶端提供只讀服務,有可能此時的數據已經過期.
在”no”情況下,任何向此server發送的數據請求服務(包括客戶端和此server的slave)都將被告知”error”,但 INFO 和SLAVEOF
命令除外。

# When a slave loses its connection with the master, or when the replication
# is still in progress, the slave can act in two different ways:slave-serve-stale-data yes


redis數據存儲


redis的存儲分爲內存存儲、磁盤存儲和log文件三部分,配置文件中有三個參數對其進行配置。

  • save seconds updates,save配置,指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。可多個條件配合,默認配置了三個條件。
  • appendonly yes/no ,appendonly配置,指出是否在每次更新操作後進行日誌記錄,如果不開啓,可能會在斷電時導致一段時間內的數據丟失。因爲redis本身同步數據文件是按上面的save條件來同步的,所以有的數據會在一段時間內只存在於內存中。
  • appendfsync no/always/everysec ,appendfsync配置,no表示等操作系統進行數據緩存同步到磁盤,always表示每次更新操作後手動調用fsync()將數據寫到磁盤,everysec表示每秒同步一次。


發佈了31 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章