1. 程式人生 > 其它 >redis.conf配置項

redis.conf配置項

Redis.conf配置項

daemonize yes

設定後臺啟動,一般設定yes

pidfile /var/run/redis.pid

Redis以守護程序方式執行時,redis預設會把pid寫入/var/run/redis.pid檔案

port 6379

預設埠為6379

bind 127.0.0.1

主機地址,設定0.0.0.0表示都可以訪問。127.0.0.1表示只允許本機訪問

timeout 900

客戶端閒置多長時間後關閉連線,如果指定為0,表示關閉該功能

logfile stdout

日誌記錄方式,預設為標準輸出

logfile "./redis7001.log"

指明日誌檔名

databases 16

設定資料庫的數量,預設資料庫為0

save

有多少次更新操作,就將資料同步到資料檔案
Redis預設配置檔案中提供了三個條件:

  • save 900 1
    900秒(15分鐘)內有1個更改
  • save 300 10
    300秒(5分鐘)內有10個更改
  • save 60 10000
    60秒內有10000個更改

rdbcompression yes

指定儲存至本地資料庫時是否壓縮資料

dbfilename dump.rdb

指定本地資料庫檔名

dir ./

指定本地資料庫存放目錄

slaveof

主從同步設定,設定主資料庫的ip和埠

tcp-keepalive 60

如果非零,則設定SO_KEEPALIVE選項來向空閒連線的客戶端傳送ACK

stop-writes-on-bgsave-error yes

預設如果開啟RDB快照(至少一條save指令)並且最新的後臺儲存失敗,Redis將會停止接受寫操作
這將使使用者知道資料沒有正確的持久化到硬碟,否則可能沒人注意到並且造成一些災難

rdbcompression yes

當匯出到 .rdb 資料庫時是否用LZF壓縮字串物件

rdbchecksum yes

版本5的RDB有一個CRC64演算法的校驗和放在了檔案的最後。這將使檔案格式更加可靠。

dbfilename dump-master.rdb

持久化資料庫的檔名

dir /usr/local/redis-4.0.8/redis_master/

工作目錄

masterauth testmaster123

slav服務連線master的密碼

slave-serve-stale-data yes

當一個slave失去和master的連線,或者同步正在進行中,slave的行為可以有兩種:
1) 如果 slave-serve-stale-data 設定為 "yes" (預設值),slave會繼續響應客戶端請求, 可能是正常資料,或者是過時了的資料,也可能是還沒獲得值的空資料。
2) 如果 slave-serve-stale-data 設定為 "no",slave會回覆"正在從master同步(SYNC with master in progress)"來 處理各種請求,除了 INFO 和 SLAVEOF 命令。

slave-read-only yes

配置是否僅讀

repl-disable-tcp-nodelay no

  • 如果你選擇“yes”Redis將使用更少的TCP包和頻寬來向slaves傳送資料。但是這將使資料傳輸到slave上有延遲,Linux核心的預設 配置會達到40毫秒
  • 如果你選擇了 "no" 資料傳輸到salve的延遲將會減少但要使用更多的頻寬

slave-priority 100

slave的優先順序,優先順序數字小的salve會優先考慮提升為master

requirepass testmaster123

密碼驗證

maxmemory 3gb

redis例項最大佔用記憶體,一旦記憶體使用達到上限,Redis會根據選定的回收策略(參見: maxmemmory-policy)刪除key

maxmemory-policy volatile-lru

最大記憶體策略:如果達到記憶體限制了,Redis如何選擇刪除key

  • volatile-lru -> 根據LRU演算法刪除帶有過期時間的key。

  • allkeys-lru -> 根據LRU演算法刪除任何key。

  • volatile-random -> 根據過期設定來隨機刪除key, 具備過期時間的key。

  • allkeys->random -> 無差別隨機刪, 任何一個key。

  • volatile-ttl -> 根據最近過期時間來刪除(輔以TTL), 這是對於有過期時間的key

  • noeviction -> 誰也不刪,直接在寫操作時返回錯誤。

appendonly yes

AOF開啟

appendfilename "appendonly.aof"

aof檔名

appendfsync everysec

fsync() 系統呼叫告訴作業系統把資料寫到磁碟上,而不是等更多的資料進入輸出緩衝區。

有些作業系統會真的把資料馬上刷到磁碟上;有些則會盡快去嘗試這麼做。

Redis支援三種不同的模式

  • no:不要立刻刷,只有在作業系統需要刷的時候再刷。比較快。

  • always:每次寫操作都立刻寫入到aof檔案。慢,但是最安全。

  • everysec:每秒寫一次。折中方案。

如果AOF的同步策略設定成 "always" 或者 "everysec",並且後臺的儲存程序(後臺儲存或寫入AOF日誌)會產生很多磁碟I/O開銷。某些Linux的配置下會使Redis因為 fsync()系統呼叫而阻塞很久。

注意,目前對這個情況還沒有完美修正,甚至不同執行緒的 fsync() 會阻塞我們同步的write(2)呼叫。

為了緩解這個問題,可以用下面這個選項。它可以在 BGSAVE 或 BGREWRITEAOF 處理時阻止主程序進行fsync()。

這就意味著如果有子程序在進行儲存操作,那麼Redis就處於"不可同步"的狀態。

這實際上是說,在最差的情況下可能會丟掉30秒鐘的日誌資料。(預設Linux設定)

如果你有延時問題把這個設定成"yes",否則就保持"no",這是儲存持久資料的最安全的方式。

no-appendfsync-on-rewrite yes

自動重寫AOF檔案

auto-aof-rewrite-min-size 64mb

設定觸發Rewrite的日誌檔案大小最小64MB

auto-aof-rewrite-percentage 100

當前寫入日誌檔案的大小超過上一次rewrite之後的檔案大小的百分之100時就是2倍時觸發Rewrite

aof-load-truncated yes

AOF檔案可能在尾部是不完整的(這跟system關閉有問題,尤其是mount ext4檔案系統時
沒有加上data=ordered選項。只會發生在os死時,redis自己死不會不完整)。
那redis重啟時load進記憶體的時候就有問題了。
發生的時候,可以選擇redis啟動報錯,並且通知使用者和寫日誌,或者load儘量多正常的資料。
如果aof-load-truncated是yes,會自動釋出一個log給客戶端然後load(預設)。
如果是no,使用者必須手動redis-check-aof修復AOF檔案才可以。
注意,如果在讀取的過程中,發現這個aof是損壞的,伺服器也是會退出的,
這個選項僅僅用於當伺服器嘗試讀取更多的資料但又找不到相應的資料時。

lua-time-limit 5000

Lua 指令碼的最大執行時間,毫秒為單位

slowlog-max-len 128

指定伺服器最多儲存多少條慢查詢日誌;這個長度沒有限制。只是要主要會消耗記憶體。你可以通過 SLOWLOG RESET 來回收記憶體。

slowlog-log-slower-than 10000

Redis慢查詢日誌可以記錄超過指定時間的查詢

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

客戶端的輸出緩衝區的限制,可用於強制斷開那些因為某種原因從伺服器讀取資料的速度不夠快的客戶端

aof-rewrite-incremental-fsync yes

當一個子程序重寫AOF檔案時,檔案每生成32M(預設)資料會被同步