Redis配置參數詳解


Redis配置參數詳解

/********************************* GENERAL *********************************/

// 是否作為守護進程運行

daemonize yes

 

// 如以后台進程運行,則需指定一個pid,默認為/var/run/redis.pid

pidfile /var/run/redis.pid

 

// Redis默認監聽端口

port 6379

 

tcp-backlog 511

 

// 客戶端閑置多少秒后,斷開連接

timeout 0

 

tcp-keepalive 0

 

// 日志記錄等級,有4個可選值,debug,verbose,notice,warning

loglevel notice

 

// 指定日志輸出的文件名,可設為/dev/null屏蔽日志

logfile ""

 

// 可用數據庫數,默認值為16,默認數據庫為0

databases 16

 

/****************************** SNAPSHOTTING 快照 *********************************/

// 保存數據到disk的策略

// 900 秒有 1 條改變保存到disk

save 900 1

// 300 秒有 10 條改變保存到disk

save 300 10

// 60 秒有 10000 條改變保存到disk

save 60 10000

 

stop-writes-on-bgsave-error yes

 

// 當dump .rdb數據庫的時候是否壓縮數據對象

rdbcompression yes

 

rdbchecksum yes

 

// 本地數據庫文件名,默認值為dump.rdb

dbfilename dump.rdb

 

// 本地數據庫存放路徑,默認值為 ./

dir ./

 

/*************************** REPLICATION Redis的復制配置 *********************************/

 

// 當本機為從服務時,設置主服務的IP及端口

// slaveof <masterip> <masterport>

 

// 當本機為從服務時,設置主服務的連接密碼

// masterauth <master-password>

 

// 當從庫同主機失去連接或者復制正在進行,從機庫有兩種運行方式

// 1) 如果slave-serve-stale-data設置為yes(默認設置),從庫會繼續相應客戶端的請求

// 2) 如果slave-serve-stale-data是指為no,出去INFO和SLAVOF命令之外的任何請求都會返回一個錯誤"SYNC with master in progress"

slave-serve-stale-data yes

 

slave-read-only yes

 

repl-diskless-sync no

 

repl-diskless-sync-delay 5

 

// 從庫會按照一個時間間隔向主庫發送PINGs.可以通過repl-ping-slave-period設置這個時間間隔,默認是10秒

repl-ping-slave-period 10

 

// repl-timeout 設置主庫批量數據傳輸時間或者ping回復時間間隔,默認值是60秒

// 一定要確保repl-timeout大於repl-ping-slave-period

repl-timeout 60

 

// 采用無延遲同步 默認no

repl-disable-tcp-nodelay yes

 

slave-priority 100

 

/********************************* SECURITY 安全 *********************************/

 

// 設置客戶端連接后進行任何其他指定前需要使用的密碼。

// 警告:因為redis速度相當快,所以在一台比較好的服務器下,一個外部的用戶可以在一秒鍾進行150K次的密碼嘗試,

這意味着你需要指定非常非常強大的密碼來防止暴力破解

// requirepass foobared

 

// 命令重命名.

// 在一個共享環境下可以重命名相對危險的命令。比如把CONFIG重名為一個不容易猜測的字符。

// 舉例:

// rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

// 如果想刪除一個命令,直接把它重命名為一個空字符""即可,如下:

// rename-command CONFIG ""

 

/********************************* LIMITS 約束 *********************************/

// 最大可用內存 maxmemory <bytes> 536870912,即512M

maxmemory 536870912

 

// 當內存達到最大值的時候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 -> 不移除任何可以,只是返回一個寫錯誤

maxmemory-policy allkeys-lru

 

// LRU 和 minimal TTL 算法都不是精准的算法,但是相對精確的算法(為了節省內存),隨意你可以選擇樣本大小進行檢測。

// Redis默認的灰選擇3個樣本進行檢測,你可以通過maxmemory-samples進行設置

maxmemory-samples 3

 

/********************************* APPEND ONLY MODE *********************************/

 

// 啟用aof持久化方式

// 因為redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在於內存中。默認值為no

appendonly yes

 

// 更新日志文件名,默認值為appendonly.aof

appendfilename "appendonly.aof"

 

// 收到寫命令立即寫入磁盤,最慢,保證完全的持久化

appendfsync always

// 每秒寫入一次

appendfsync everysec

// 完全依賴OS,性能最好,持久化沒保證

appendfsync no

 

// 部署在同一機器的redis實例,把auto-aof-rewrite打開,因為cluster環境下內存占用基本一致

#關閉在aof rewrite的時候對新的寫操作進行fsync

no-appendfsync-on-rewrite yes

 

// Automatic rewrite of the append only file.

// AOF 自動重寫

// 當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日志文件進行重寫

//

// 它是這樣工作的:Redis會記住上次進行些日志后文件的大小(如果從開機以來還沒進行過重寫,那日子大小在開機的時候確定)

//

// 基礎大小會同現在的大小進行比較。如果現在的大小比基礎大小大制定的百分比,重寫功能將啟動

// 同時需要指定一個最小大小用於AOF重寫,這個用於阻止即使文件很小但是增長幅度很大也去重寫AOF文件的情況

// 設置 percentage 為0就關閉這個特性

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

 

aof-load-truncated yes

 

/********************************* LUA SCRIPTING *********************************/

lua-time-limit 5000

 

/********************************* REDIS CLUSTER 集群*********************************/

// 打開redis集群

cluster-enabled yes

 

// cluster配置文件(啟動自動生成)

cluster-config-file nodes-6379.conf

 

// 節點互連超時的閥值

cluster-node-timeout 15000

 

cluster-slave-validity-factor 10

 

cluster-migration-barrier 1

 

// 集群兼容部分失敗

cluster-require-full-coverage yes

 

/********************************* SLOW LOG *********************************/

 

// Redis Slow Log 記錄超過特定執行時間的命令。執行時間不包括I/O計算比如連接客戶端,返回結果等,只是命令執行時間

//

// 可以通過兩個參數設置slow log:一個是告訴Redis執行超過多少時間被記錄的參數slowlog-log-slower-than(微妙),

// 另一個是slow log 的長度。當一個新命令被記錄的時候最早的命令將被從隊列中移除

 

// 下面的時間以微妙微單位,因此1000000代表一分鍾。

// 注意制定一個負數將關閉慢日志,而設置為0將強制每個命令都會記錄

slowlog-log-slower-than 10000

 

// 對日志長度沒有限制,只是要注意它會消耗內存

// 可以通過 SLOWLOG RESET 回收被慢日志消耗的內存

slowlog-max-len 128

 

/********************************* LATENCY MONITOR *********************************/

 

latency-monitor-threshold 0

 

/********************************* EVENT NOTIFICATION *********************************/

 

notify-keyspace-events ""

 

/********************************* ADVANCED CONFIG *********************************/

 

// 當hash中包含超過指定元素個數並且最大的元素沒有超過臨界時,

// hash將以一種特殊的編碼方式(大大減少內存使用)來存儲,這里可以設置這兩個臨界值

// Redis Hash對應Value內部實際就是一個HashMap,實際這里會有2種不同實現,

// 這個Hash的成員比較少時Redis為了節省內存會采用類似一維數組的方式來緊湊存儲,

而不會采用真正的HashMap結構,對應的value redisObject的encoding為zipmap,

 

// 當成員數量增大時會自動轉成真正的HashMap,此時encoding為ht。

 

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

 

// list數據類型多少節點以下會采用去指針的緊湊存儲格式。

// list數據類型節點值大小小於多少字節會采用緊湊存儲格式。

list-max-ziplist-entries 512

list-max-ziplist-value 64

 

// set數據類型內部數據如果全部是數值型,且包含多少節點以下會采用緊湊格式存儲。

set-max-intset-entries 512

 

// zsort數據類型多少節點以下會采用去指針的緊湊存儲格式。

// zsort數據類型節點值大小小於多少字節會采用緊湊存儲格式。

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

 

hll-sparse-max-bytes 3000

 

// Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用

//

// 當你的使用場景中,有非常嚴格的實時性需要,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。

//

// 如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存

activerehashing yes

 

client-output-buffer-limit normal 0 0 0

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

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

 

hz 10

 

aof-rewrite-incremental-fsync yes

 

/********************************* VM *********************************/

 

// 是否使用虛擬內存,默認值為no

vm-enabled yes

 

// 虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享

vm-swap-file /tmp/redis.swap

 

// 將所有大於vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的

(Redis的索引數據就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在於磁盤。默認值為0。

vm-max-memory 0

 

// 虛擬內存文件以塊存儲,每塊32bytes

vm-page-size 32

 

// 虛擬內在文件的最大數

vm-pages 134217728

 

// 可以設置訪問swap文件的線程數,設置最好不要超過機器的核數,如果設置為0,那么所有對swap文件的操作都是串行的.

可能會造成比較長時間的延遲,但是對數據完整性有很好的保證.

vm-max-threads 4

 

/********************************* INCLUDES *********************************/

// 包含通用配置

include /etc/redis/redis-common.conf

 

/********************************* GENERAL *********************************/

// 如以后台進程運行,則需指定一個pid,默認為/var/run/redis.pid

pidfile /var/run/redis_6379.pid

 

// Redis默認監聽端口

port 6379

 

// 指定日志輸出的文件名,可設為/dev/null屏蔽日志

logfile /var/log/redis_6379.log

 

/********************************* SNAPSHOTTING 快照 *********************************/

 

// 本地數據庫文件名,默認值為dump.rdb

dbfilename dump6379.rdb

 

// 本地數據庫存放路徑,默認值為 ./

dir /var/redis/6379

 

/********************************* REPLICATION Redis的復制配置 *********************************/

 

// 當本機為從服務時,設置主服務的IP及端口

// slaveof <masterip> <masterport>

 

// 當本機為從服務時,設置主服務的連接密碼

// masterauth <master-password>

 

/********************************* APPEND ONLY MODE *********************************/

 

// 更新日志文件名,默認值為appendonly.aof

appendfilename "appendonly6379.aof"

 

/********************************* REDIS CLUSTER 集群 *********************************/

 

// cluster配置文件(啟動自動生成)

cluster-config-file nodes-6379.conf

 

 http://blog.51yip.com/nosql/1724.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM