Redis應用配置項說明

weixin_33806914發表於2016-09-29

近期整理了下專案中Redis配置引數,以便學習備用~

#指定記憶體大小,格式為1k 1GB 1M,單位不區分大小寫

# 1k  => 1000 bytes

# 1kb => 1024 bytes

# 1m  => 1000000 bytes

# 1mb => 1024*1024 bytes

# 1g  => 1000000000 bytes

# 1gb => 1024*1024*1024 bytes

 

#redis連線的埠 啟動後使用redis-cli -p 7001連線對應埠

port 7001

 

# 預設情況下 redis 不是作為守護程式執行的,如果你想讓它在後臺執行,你就把它改成 yes。

# 當redis作為守護程式執行的時候,它會寫一個 pid 到 /var/run/redis.pid 檔案裡面。

daemonize no

 

#當redis作為守護程式執行的時候,它會把 pid 預設寫到 /var/run/redis.pid 檔案裡面,

# 但是你可以在這裡自己制定它的檔案位置。

pidfile /usr/local/bin/redis.pid

 

## 設定資料庫的數目(預設資料庫是 DB 0)

databases 16

 

#該配置項為快照,格式為: save<間隔時間(秒)><寫入次數>

如下表示:900 秒後如果至少有 1 個 key 的值變化,則儲存;300 秒後如果至少有 10 個 key 的值變化,則儲存;60 秒後如果至少有 10000 個 key 的值變化,則儲存,也可不設定,不進行儲存

save 900 1

save 300 10

save 60 10000

 

# 預設情況下,如果 redis 最後一次的後臺儲存失敗,redis 將停止接受寫操作,

# 這樣以一種強硬的方式讓使用者知道資料不能正確的持久化到磁碟,

# 否則就會沒人注意到災難的發生。

# 如果後臺儲存程式重新啟動工作了,redis 也將自動的允許寫操作。

# 然而你要是安裝了靠譜的監控,你可能不希望 redis 這樣做,那你就改成 no 好了。

stop-writes-on-bgsave-error yes

 

# 是否在 dump .rdb 資料庫的時候使用 LZF 壓縮字串

# 預設都設為 yes

# 如果你希望儲存子程式節省點 cpu ,你就設定它為 no ,

# 不過這個資料集可能就會比較大

rdbcompression yes

rdbchecksum yes

 

# rdb info  設定dump的檔案位置,寫入指定目錄

dbfilename dump_7001.rdb

dir /etc/redis/rdb/

 

#主從複製 使用slaveof來讓一個redis例項成為另一個redis例項的副本,這個只需要在slave上配置.

#slaveof <masterip><masterport>

#如果master 需要密碼認證,就在這裡設定

#masterauth <master-password>

 

#如果為yes ,slave仍然會應答客戶端請求,但返回的資料可能過時,也可能在第一次同步時為空

slave-serve-stale-data yes

#設定slave為只讀的

slave-read-only yes

 

#無磁碟複製功能

repl-diskless-sync no

#當收到第一個請求時,等待多個slave一起來請求之間的間隔時間

repl-diskless-sync-delay 5

 

#在slave和master同步後(傳送psync/sync),後續的同步是否設定成TCP_NODELAY

#假如設定成yes,則redis會合並小的TCP包從而節省頻寬,但會增加同步延遲(40ms),造成master和slave資料不一致。

#假如設定成no,則redis master會立即傳送同步資料,沒有延遲。

repl-disable-tcp-nodelay yes

 

#當master不能正常工作的時候,Redis Sentinel會從slaves中選出一個新的master,這個值越小,就越會被優先選中,但是如果是0,就是意味著這個slave不可能被選中。

slave-priority 100

 

#最大使用記憶體

maxmemory 20g

 

#是否在每次更新操作後進行日誌記錄,如果不開啟,可能會在斷電時導致一段時間內的資料丟失。之前配置的save同步資料,是以間隔性質,也就是說,有段時間可能資料只存在於記憶體

appendonly no

 

#預設是everysec,按照速度和安全折中是最好的,每一秒寫入aof檔案,並完成磁碟同步

appendfsync everysec

 

#redis 提供了兩種持久化機制,rdb和aof。如果該引數設定為no,是最安全的方式,不會丟失資料,但是要忍受阻塞的問題,如果設定為yes,這就相當於將appendfsync設定為no,這說明並沒有執行磁碟操作,只是寫入了緩衝區,因此這樣並不會造成阻塞(因為沒有競爭磁碟),但是如果這個時候redis掛掉,就會丟失資料。

no-appendfsync-on-rewrite yes

 

#限制指令碼的最長執行時間

lua-time-limit 5000

 

#slowlog是redis用於記錄記錄慢查詢執行時間的日誌系統

slowlog-log-slower-than 10000

 

#hash型別的資料結構在編碼上可以使用ziplist和hashtable。ziplist的特點就是檔案儲存(以及記憶體儲存)所需的空間較小,在內容較小時,效能和hashtable幾乎一樣.因此redis對hash型別預設採取ziplist。如果hash中條目的條目個數或者value長度達到閥值,將會被重構為hashtable

hash-max-ziplist-entries 128

#這個引數指的是ziplist中允許儲存的最大條目個數,,預設為512

hash-max-ziplist-value 1024

 以下如上:

ist-max-ziplist-entries 256

list-max-ziplist-value 1024

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

 

#指定是否啟用重置雜湊,預設為開啟

activerehashing yes

 

#預設情況下,"hz"的被設定為10.提高該值將在Redis空閒時使用更多的CPU時,但同時當有多個key同時到期會使Redis的反映更靈敏,以及超時可以更精確地處理。

#範圍是1到500之間,但是值超過100通常不是一個好主意。

#大多數使用者應該使用10這個預設值,只有在非常低的延遲要求時有必要提高到100.

hz 10

 

#當一個子程式重寫AOF檔案時,如果啟用下面的選項,則檔案每生成32M資料會被同步。為了增量式的寫入磁碟

#並且避免大的延遲高峰這個指令是非常有用的

aof-rewrite-incremental-fsync yes

 

相關文章