溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

redis配置文件詳解

發(fā)布時(shí)間:2020-06-05 19:09:34 來源:網(wǎng)絡(luò) 閱讀:1056 作者:歸來仍少年 欄目:數(shù)據(jù)庫


######################### 通用 #########################

# 啟動(dòng)后臺(tái)進(jìn)程

daemonize yes

# 后臺(tái)進(jìn)程的pid文件存儲(chǔ)位置

pidfile /var/run/redis.pid

# 默認(rèn)監(jiān)聽端口

port 6379

# 在高并發(fā)的環(huán)境中,為避免慢客戶端的連接問題,需要設(shè)置一個(gè)高速后臺(tái)日志

tcp-backlog 511

# 只接受以下綁定的IP請求

# Examples:

# bind 192.168.1.100 10.0.0.1

bind 127.0.0.1

# 設(shè)置unix監(jiān)聽,默認(rèn)為空

# unixsocket /tmp/redis.sock

# unixsocketperm 700

#客戶端空閑多長時(shí)間,關(guān)閉鏈接,0表示不關(guān)閉

timeout 0

# TCP keepalive.

# 如果是非零值,當(dāng)失去鏈接時(shí),會(huì)使用SO_KEEPALIVE發(fā)送TCP ACKs 到客戶端。

# 這個(gè)參數(shù)有兩個(gè)作用:

# 1.檢測斷點(diǎn)。

# 2.從網(wǎng)絡(luò)中間設(shè)備來看,就是保持鏈接

# 在Linux上,設(shè)定的時(shí)間就是發(fā)送ACKs的周期。

# 注意:達(dá)到雙倍的設(shè)定時(shí)間才會(huì)關(guān)閉鏈接。在其他內(nèi)核上,周期依賴于內(nèi)核設(shè)置。

# 一個(gè)比較合理的值為60s

tcp-keepalive 0

# 指定日志級別,以下記錄信息依次遞減

# debug用于開發(fā)/測試

# verbose沒debug那么詳細(xì)

# notice適用于生產(chǎn)線

# warning只記錄非常重要的信息

loglevel notice

#日志文件名稱,如果為stdout則輸出到標(biāo)準(zhǔn)輸出端,如果是以后臺(tái)進(jìn)程運(yùn)行則不產(chǎn)生日志

logfile ""

# 要想啟用系統(tǒng)日志記錄器,設(shè)置一下選項(xiàng)為yes

# syslog-enabled no

# 指明syslog身份

# syslog-ident redis

# 指明syslog設(shè)備。必須是一個(gè)用戶或者是local0 ~ local7之一

# syslog-facility local0

#設(shè)置數(shù)據(jù)庫數(shù)目,第一個(gè)數(shù)據(jù)庫編號為:0

databases 16

######################### 快照 #########################

# 在什么條件下保存數(shù)據(jù)庫到磁盤,條件可以有很多個(gè),滿足任何一個(gè)條件都會(huì)進(jìn)行快照存儲(chǔ)

# 在900秒之內(nèi)有一次key的變化

save 900 1

# 在300秒之內(nèi),有10個(gè)key的變化

save 300 10

# 在60秒之內(nèi)有10000個(gè)key變化

save 60 10000

# 當(dāng)持久化失敗的時(shí)候,是否繼續(xù)提供服務(wù)

stop-writes-on-bgsave-error yes

# 當(dāng)寫入磁盤時(shí),是否使用LZF算法壓縮數(shù)據(jù),默認(rèn)為yes

rdbcompression yes

# 是否添加CRC64校驗(yàn)到每個(gè)文件末尾--花費(fèi)時(shí)間保證安全

rdbchecksum yes

# 磁盤上數(shù)據(jù)庫的保存名稱

dbfilename dump.rdb

# Redis工作目錄,以上數(shù)據(jù)庫保存文件和AOF日志都會(huì)寫入此目錄

dir ./

######################### 主從同步 #########################

# 主從復(fù)制,當(dāng)本機(jī)是slave時(shí)配置

# slaveof <masterip> <masterport>

# 當(dāng)主機(jī)需要密碼驗(yàn)證時(shí)候配置

# masterauth <master-password>

# 當(dāng)slave和master丟失鏈接,或正處于同步過程中。是否響應(yīng)客戶端請求

# 設(shè)置為yes表示響應(yīng)

# 設(shè)置為no,直接返回"SYNC with master in progress"(正在和主服務(wù)器同步中)

slave-serve-stale-data yes

# 設(shè)置slave是否為只讀。

# 注意:即使slave設(shè)置為只讀,也不能令其暴露在不受信任的網(wǎng)絡(luò)環(huán)境中

slave-read-only yes

# 無硬盤復(fù)制功能

repl-diskless-sync no

# 等待多個(gè)slave一起來請求之間的間隔時(shí)間

repl-diskless-sync-delay 5

# 設(shè)置slave給master發(fā)送ping的時(shí)間間隔

# repl-ping-slave-period 10

# 設(shè)置數(shù)據(jù)傳輸I/O,主機(jī)數(shù)據(jù)、ping響應(yīng)超時(shí)時(shí)間,默認(rèn)60s

# 這個(gè)時(shí)間一定要比repl-ping-slave-period大,否則會(huì)不斷檢測到超時(shí)

# repl-timeout 60

# 是否在SYNC后slave socket上禁用TCP_NODELAY?

# 如果你設(shè)置為yes,Redis會(huì)使用少量TCP報(bào)文和少量帶寬發(fā)送數(shù)據(jù)給slave。

# 但是這樣會(huì)在slave端出現(xiàn)延遲。如果使用Linux內(nèi)核的默認(rèn)設(shè)置,大概40毫秒。

# 如果你設(shè)置為no,那么在slave端研究就會(huì)減少但是同步帶寬要增加。

# 默認(rèn)我們是為低延遲優(yōu)化的。

# 但是如果流量特別大或者主從服務(wù)器相距比較遠(yuǎn),設(shè)置為yes比較合理。

repl-disable-tcp-nodelay no

# 設(shè)置復(fù)制的后臺(tái)日志大小。

# 復(fù)制的后臺(tái)日志越大, slave 斷開連接及后來可能執(zhí)行部分復(fù)制花的時(shí)間就越長。

# 后臺(tái)日志在至少有一個(gè) slave 連接時(shí),僅僅分配一次。

# repl-backlog-size 1mb

# 在 master 不再連接 slave 后,后臺(tái)日志將被釋放。下面的配置定義從最后一個(gè) slave 斷開連接后需要釋放的時(shí)間(秒)。

# 0 意味著從不釋放后臺(tái)日志

# repl-backlog-ttl 3600

# 設(shè)置slave優(yōu)先級,默認(rèn)為100

# 當(dāng)主服務(wù)器不能正確工作的時(shí)候,數(shù)字低的首先被提升為主服務(wù)器,但是0是禁用選擇

slave-priority 100

# 如果少于 N 個(gè) slave 連接,且延遲時(shí)間 <=M 秒,則 master 可配置停止接受寫操作。

# 例如需要至少 3 個(gè) slave 連接,且延遲 <=10 秒的配置:

# min-slaves-to-write 3

# min-slaves-max-lag 10

# 設(shè)置 0 為禁用

# 默認(rèn) min-slaves-to-write 為 0 (禁用), min-slaves-max-lag 為 10

######################### 安全 #########################

# 設(shè)置客戶端連接密碼,因?yàn)镽edis響應(yīng)速度可以達(dá)到每秒100w次,所以密碼要特別復(fù)雜

# requirepass 1413

# 命令重新命名,或者禁用。

# 重命名命令為空字符串可以禁用一些危險(xiǎn)命令比如:FLUSHALL刪除所有數(shù)據(jù)

# 需要注意的是,寫入AOF文件或傳送給slave的命令別名也許會(huì)引起一些問題

# rename-command CONFIG ""

# 設(shè)置客戶端連接密碼,因?yàn)镽edis響應(yīng)速度可以達(dá)到每秒100w次,所以密碼要特別復(fù)雜

requirepass 1413

# 命令重新命名,或者禁用。

# 重命名命令為空字符串可以禁用一些危險(xiǎn)命令比如:FLUSHALL刪除所有數(shù)據(jù)

# 需要注意的是,寫入AOF文件或傳送給slave的命令別名也許會(huì)引起一些問題

# rename-command CONFIG ""

######################### 限制 #########################

# 設(shè)置最多鏈接客戶端數(shù)量,默認(rèn)為10000。

# 實(shí)際可以接受的請求數(shù)目為設(shè)置值減去32,這32是Redis為內(nèi)部文件描述符保留的

# maxclients 10000

# 設(shè)置最多鏈接客戶端數(shù)量,默認(rèn)為10000。

# 實(shí)際可以接受的請求數(shù)目為設(shè)置值減去32,這32是Redis為內(nèi)部文件描述符保留的

# maxclients 10000

# 設(shè)置最大使用內(nèi)存數(shù)量,在把Redis當(dāng)作LRU緩存時(shí)特別有用。

# 設(shè)置的值要比系統(tǒng)能使用的值要小

# 因?yàn)楫?dāng)啟用刪除算法時(shí),slave輸出緩存也要占用內(nèi)存

# maxmemory <bytes>

#達(dá)到最大內(nèi)存限制時(shí),使用何種刪除算法

# volatile-lru  使用LRU算法移除帶有過期標(biāo)致的key

# allkeys-lru -> 使用LRU算法移除任何key

# volatile-random -> 隨機(jī)移除一個(gè)帶有過期標(biāo)致的key

# allkeys-random ->  隨機(jī)移除一個(gè)key

# volatile-ttl -> 移除最近要過期的key

# noeviction -> 不刪除key,當(dāng)有寫請求時(shí),返回錯(cuò)誤

#默認(rèn)設(shè)置為volatile-lru

# maxmemory-policy noeviction

# LRU和最小TTL算法沒有精確的實(shí)現(xiàn)

# 為了節(jié)省內(nèi)存只在一個(gè)樣本范圍內(nèi)選擇一個(gè)最近最少使用的key,可以設(shè)置這個(gè)樣本大小

# maxmemory-samples 5

######################### AO模式 #########################

# AOF和RDB持久化可以同時(shí)啟用

# Redis啟動(dòng)時(shí)候會(huì)讀取AOF文件,AOF文件有更好的持久化保證

appendonly no

# AOF的保存名稱,默認(rèn)為appendonly.aof

appendfilename "appendonly.aof"

# 設(shè)置何時(shí)寫入追加日志,又三種模式

# no:表示由操作系統(tǒng)決定何時(shí)寫入。性能最好,但可靠性最低

# everysec:表示每秒執(zhí)行一次寫入。折中方案,推薦

# always:表示每次都寫入磁盤。性能最差,比上面的安全一些

# appendfsync always

appendfsync everysec

# appendfsync no

# 當(dāng)AOF同步策略設(shè)定為alway或everysec

# 當(dāng)后臺(tái)存儲(chǔ)進(jìn)程(后臺(tái)存儲(chǔ)或者AOF日志后臺(tái)寫入)會(huì)產(chǎn)生很多磁盤開銷

# 某些Linux配置會(huì)使Redis因?yàn)閒sync()調(diào)用產(chǎn)生阻塞很久

# 現(xiàn)在還沒有修復(fù)補(bǔ)丁,甚至使用不同線程進(jìn)行fsync都會(huì)阻塞我們的同步write(2)調(diào)用。

# 為了緩解這個(gè)問題,使用以下選項(xiàng)在一個(gè)BGSAVE或BGREWRITEAOF運(yùn)行的時(shí)候

# 可以阻止fsync()在主程序中被調(diào)用,

no-appendfsync-on-rewrite no

# AOF自動(dòng)重寫(合并命令,減少日志大?。?/span>

# 當(dāng)AOF日志大小增加到一個(gè)特定比率,Redis調(diào)用BGREWRITEAOF自動(dòng)重寫日志文件

# 原理:Redis 會(huì)記錄上次重寫后AOF文件的文件大小。

# 如果剛啟動(dòng),則記錄啟動(dòng)時(shí)AOF大小

# 這個(gè)基本大小會(huì)用來和當(dāng)前大小比較。如果當(dāng)前大小比特定比率大,就會(huì)觸發(fā)重寫。

# 你也需要指定一個(gè)AOF需要被重寫的最小值,這樣會(huì)避免達(dá)到了比率。

# 但是AOF文件還很小的情況下重寫AOF文件。

# 設(shè)置為0禁用自動(dòng)重寫

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

#redis在啟動(dòng)時(shí)可以加載被截?cái)嗟腁OF文件,而不需要先執(zhí)行 redis-check-aof 工具

aof-load-truncated yes

######################### LUA腳本 #########################

# Lua腳本的最大執(zhí)行時(shí)間,單位毫秒

# 超時(shí)后會(huì)報(bào)錯(cuò),并且計(jì)入日志

# 當(dāng)一個(gè)腳本運(yùn)行時(shí)間超過了最大執(zhí)行時(shí)間

# 只有SCRIPT KILL和 SHUTDOWN NOSAVE兩個(gè)命令可以使用。

# SCRIPT KILL用于停止沒有調(diào)用寫命令的腳本。

# SHUTDOWN NOSAVE是唯一的一個(gè),在腳本的寫命令正在執(zhí)行

# 用戶又不想等待腳本的正常結(jié)束的情況下,關(guān)閉服務(wù)器的方法。

# 以下選項(xiàng)設(shè)置為0或負(fù)數(shù)就會(huì)取消腳本執(zhí)行時(shí)間限制

lua-time-limit 5000

####################### redis集群  ########################

# 是否啟用集群

# cluster-enabled yes

# 集群配置文件

# 集群配置變更后會(huì)自動(dòng)寫入改文件

# cluster-config-file nodes-6379.conf

# 節(jié)點(diǎn)互連超時(shí)的閥值

# 節(jié)點(diǎn)超時(shí)時(shí)間,超過該時(shí)間無法連接主要Master節(jié)點(diǎn)后,會(huì)停止接受查詢服務(wù)

# cluster-node-timeout 15000

# 控制從節(jié)點(diǎn)FailOver相關(guān)的設(shè)置,設(shè)為0,從節(jié)點(diǎn)會(huì)一直嘗試啟動(dòng)FailOver.

# 設(shè)為正數(shù),失聯(lián)大于一定時(shí)間(factor*節(jié)點(diǎn)TimeOut),不再進(jìn)行FailOver

# cluster-slave-validity-factor 10

# 最小從節(jié)點(diǎn)連接數(shù)

# cluster-migration-barrier 1

# 默認(rèn)為Yes,丟失一定比例Key后(可能Node無法連接或者掛掉),集群停止接受寫操作

# 設(shè)置為No,集群丟失Key的情況下仍提供查詢服務(wù)

# cluster-require-full-coverage yes

######################### 慢查詢 #########################

# Redis慢查詢?nèi)罩居涗洺^設(shè)定時(shí)間的查詢,且只記錄執(zhí)行命令的時(shí)間

# 不記錄I/O操作,比如:和客戶端交互,發(fā)送回復(fù)等。

# 時(shí)間單位為微妙,1000000微妙 = 1 秒

# 設(shè)置為負(fù)數(shù)會(huì)禁用慢查詢?nèi)罩?,設(shè)置為0會(huì)記錄所有查詢命令

slowlog-log-slower-than 10000

# 日志長度沒有限制,但是會(huì)消耗內(nèi)存。超過日志長度后,最舊的記錄會(huì)被移除

# 使用SLOWLOG RESET命令可以回收內(nèi)存

slowlog-max-len 128

######################### 延遲監(jiān)測 #########################

# 系統(tǒng)只記錄超過設(shè)定值的操作,單位是毫秒,0表示禁用該功能  

# 可以通過命令“CONFIG SET latency-monitor-threshold <milliseconds>” 直接設(shè)置而不需要重啟redis  

latency-monitor-threshold 0

######################### 事件通知 #########################

#  當(dāng)事件發(fā)生時(shí), Redis 可以通知 Pub/Sub 客戶端。

#  可以在下表中選擇 Redis 要通知的事件類型。事件類型由單個(gè)字符來標(biāo)識:

# K     Keyspace 事件,以 _keyspace@<db>_ 的前綴方式發(fā)布

# E     Keyevent 事件,以 _keysevent@<db>_ 的前綴方式發(fā)布

# g     通用事件(不指定類型),像 DEL, EXPIRE, RENAME, …

# $     String 命令

# s     Set 命令

# h     Hash 命令

# z     有序集合命令

# x     過期事件(每次 key 過期時(shí)生成)

# e     清除事件(當(dāng) key 在內(nèi)存被清除時(shí)生成)

# A     g$lshzxe 的別稱,因此 ”AKE” 意味著所有的事件

# notify-keyspace-events 帶一個(gè)由 0 到多個(gè)字符組成的字符串參數(shù)??兆址馑际峭ㄖ唤?。

#  例子:啟用 list 和通用事件:

# notify-keyspace-events Elg

#  默認(rèn)所用的通知被禁用,因?yàn)橛脩敉ǔ2恍枰奶匦?,并且該特性?huì)有性能損耗。

#  注意如果你不指定至少 K 或 E 之一,不會(huì)發(fā)送任何事件。

notify-keyspace-events ""

#notify-keyspace-events AKE

######################### 高級設(shè)置 #########################

# 當(dāng)有少量條目的時(shí)候,哈希使用高效內(nèi)存數(shù)據(jù)結(jié)構(gòu)。最大的條目也不能超過設(shè)定的閾值。# “少量”定義如下:

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

# 和哈希編碼一樣,少量列表也以特殊方式編碼節(jié)省內(nèi)存?!吧倭俊痹O(shè)定如下:

list-max-ziplist-entries 512

list-max-ziplist-value 64

# 集合只在以下情況下使用特殊編碼來節(jié)省內(nèi)存

# -->集合全部由64位帶符號10進(jìn)制整數(shù)構(gòu)成的字符串組成

# 下面的選項(xiàng)設(shè)置這個(gè)特殊集合的大小。

set-max-intset-entries 512

# 當(dāng)有序集合的長度和元素設(shè)定為以下數(shù)字時(shí),又特殊編碼節(jié)省內(nèi)存

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

# HyperLogLog 稀疏表示字節(jié)限制

# 這個(gè)限制包含了16個(gè)字節(jié)的頭部,當(dāng)一個(gè)HyperLogLog使用sparse representation

# 超過了這個(gè)顯示,它就會(huì)轉(zhuǎn)換到dense representation上

hll-sparse-max-bytes 3000

# 哈希刷新使用每100個(gè)CPU毫秒中的1毫秒來幫助刷新主哈希表(頂級鍵值映射表)。

#  Redis哈希表使用延遲刷新機(jī)制,越多操作,越多刷新。

# 如果服務(wù)器空閑,刷新操作就不會(huì)進(jìn)行,更多內(nèi)存會(huì)被哈希表占用

# 默認(rèn)每秒進(jìn)行10次主字典刷新,釋放內(nèi)存。

# 如果你有硬性延遲需求,偶爾2毫秒的延遲無法忍受的話。設(shè)置為no

# 否則設(shè)置為yes

activerehashing yes

# 客戶端輸出緩存限制強(qiáng)迫斷開讀取速度比較慢的客戶端

# 有三種類型的限制

# normal -> 正常

# slave  -> slave和 MONITOR

# pubsub -> 客戶端至少訂閱了一個(gè)頻道或者模式

# 客戶端輸出緩存限制語法如下(時(shí)間單位:秒)

# client-output-buffer-limit <類別> <強(qiáng)制限制> <軟性限制> <軟性時(shí)間>

# 達(dá)到強(qiáng)制限制緩存大小,立刻斷開鏈接。

# 達(dá)到軟性限制,仍然會(huì)有軟性時(shí)間大小的鏈接時(shí)間

# 默認(rèn)正常客戶端無限制,只有請求后,異步客戶端數(shù)據(jù)請求速度快于它能讀取數(shù)據(jù)的速度

# 訂閱模式和主從客戶端又默認(rèn)限制,因?yàn)樗鼈兌冀邮芡扑汀?/span>

# 強(qiáng)制限制和軟性限制都可以設(shè)置為0來禁用這個(gè)特性

client-output-buffer-limit normal 0 0 0

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

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

# 設(shè)置Redis后臺(tái)任務(wù)執(zhí)行頻率,比如清除過期鍵任務(wù)。

# 設(shè)置范圍為1到500,默認(rèn)為10.越大CPU消耗越大,延遲越小。

# 建議不要超過100

hz 10

# 當(dāng)子進(jìn)程重寫AOF文件,以下選項(xiàng)開啟時(shí),AOF文件會(huì)每產(chǎn)生32M數(shù)據(jù)同步一次。

# 這有助于更快寫入文件到磁盤避免延遲

aof-rewrite-incremental-fsync yes



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI