redis4配置文件

一、INCLUDES

include /path/to/local.conf
額外載入配置文件猪腕,如果有需要的話冗澈,可以開啟此配置

二、NETWORK

bind 127.0.0.1

綁定redis服務(wù)器網(wǎng)卡IP陋葡,默認(rèn)為127.0.0.1,即本地回環(huán)地址亚亲。這樣的話,訪問redis服務(wù)只能通過本機(jī)的客戶端連接脖岛,而無法通過遠(yuǎn)程連接朵栖。如果bind選項為空的話颊亮,那會接受所有來自于可用網(wǎng)絡(luò)接口的連接柴梆。如上配置,綁定一個127.0.0.1的本機(jī)地址和192.168.1.100的外網(wǎng)地址终惑。

protected-mode yes

保護(hù)模式绍在,默認(rèn)是開啟狀態(tài),只允許本地客戶端連接雹有, 可以設(shè)置密碼或添加bind來連接

port 6379

監(jiān)聽端口號偿渡,默認(rèn)為6379,如果設(shè)為0霸奕,redis將不在socket 上監(jiān)聽任何客戶端連接

tcp-backlog 511

TCP監(jiān)聽的最大容納數(shù)量溜宽,在高并發(fā)的環(huán)境下,你需要把這個值調(diào)高以避免客戶端連接緩慢的問題质帅。Linux 內(nèi)核會把這個值縮小成 /proc/sys/net/core/somaxconn對應(yīng)的值适揉,要提升并發(fā)量需要修改這兩個值才能達(dá)到目的

unixsocket /tmp/redis.sock
unixsocketperm 700

指定redis監(jiān)聽的unix socket路徑留攒,默認(rèn)不啟用,unixsocketper指定文件的權(quán)限

timeout 0

指定在一個 client 空閑多少秒之后關(guān)閉連接(0表示永不關(guān)閉)

tcp-keepalive 300

單位是秒嫉嘀,表示將周期性的使用SO_KEEPALIVE檢測客戶端是否還處于健康狀態(tài)炼邀,避免服務(wù)器一直阻塞,官方給出的建議值是300s剪侮,如果設(shè)置為0拭宁,則不會周期性的檢測

三、GENERAL

daemonize yes

默認(rèn)情況下 redis 不是作為守護(hù)進(jìn)程運行的瓣俯,如果你想讓它在后臺運行杰标,你就把它改成 yes。當(dāng)redis作為守護(hù)進(jìn)程運行的時候降铸,它會寫一個 pid 到 /var/run/redis.pid 文件里面

supervised no

可以通過upstart和systemd管理Redis守護(hù)進(jìn)程
選項:
supervised no - 沒有監(jiān)督互動
supervised upstart - 通過將Redis置于SIGSTOP模式來啟動信號
supervised systemd - signal systemd將READY = 1寫入$ NOTIFY_SOCKET
supervised auto - 檢測upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET環(huán)境變量

pidfile /var/redis/run/redis_6379.pid

配置PID文件路徑在旱,當(dāng)redis作為守護(hù)進(jìn)程運行的時候,它會把 pid 默認(rèn)寫到 /var/redis/run/redis_6379.pid 文件里面

loglevel notice

定義日志級別推掸。
可以是下面的這些值:
debug(記錄大量日志信息桶蝎,適用于開發(fā)、測試階段)
verbose(較多日志信息)
notice(適量日志信息谅畅,使用于生產(chǎn)環(huán)境)
warning(僅有部分重要登渣、關(guān)鍵信息才會被記錄)

logfile /var/redis/log/redis_6379.log

日志文件的位置,當(dāng)指定為空字符串時毡泻,為標(biāo)準(zhǔn)輸出胜茧,如果redis已守護(hù)進(jìn)程模式運行,那么日志將會輸出到/dev/null

syslog-enabled no

要想把日志記錄到系統(tǒng)日志仇味,就把它改成 yes呻顽,也可以可選擇性的更新其他的syslog 參數(shù)以達(dá)到你的要求

syslog-ident redis

設(shè)置系統(tǒng)日志的ID

syslog-facility local0

指定系統(tǒng)日志設(shè)置,必須是 USER 或者是 LOCAL0-LOCAL7 之間的值

databases 16

設(shè)置數(shù)據(jù)庫的數(shù)目丹墨。默認(rèn)的數(shù)據(jù)庫是DB 0 廊遍,可以在每個連接上使用select <dbid> 命令選擇一個不同的數(shù)據(jù)庫,dbid是一個介于0到databases - 1 之間的數(shù)值贩挣。

四喉前、SNAPSHOTTING

save 900 1
save 300 10
save 60 10000

存 DB 到磁盤:
格式:save <間隔時間(秒)> <寫入次數(shù)>
根據(jù)給定的時間間隔和寫入次數(shù)將數(shù)據(jù)保存到磁盤
下面的例子的意思是:
900 秒內(nèi)如果至少有 1 個 key 的值變化,則保存
300 秒內(nèi)如果至少有 10 個 key 的值變化王财,則保存
60 秒內(nèi)如果至少有 10000 個 key 的值變化卵迂,則保存
  
注意:你可以注釋掉所有的 save 行來停用保存功能。
也可以直接一個空字符串來實現(xiàn)停用:
save ""

stop-writes-on-bgsave-error yes

如果用戶開啟了RDB快照功能绒净,那么在redis持久化數(shù)據(jù)到磁盤時如果出現(xiàn)失敗见咒,默認(rèn)情況下,redis會停止接受所有的寫請求挂疆。
這樣做的好處在于可以讓用戶很明確的知道內(nèi)存中的數(shù)據(jù)和磁盤上的數(shù)據(jù)已經(jīng)存在不一致了改览。
如果redis不顧這種不一致哎垦,一意孤行的繼續(xù)接收寫請求,就可能會引起一些災(zāi)難性的后果恃疯。
如果下一次RDB持久化成功漏设,redis會自動恢復(fù)接受寫請求。
如果不在乎這種數(shù)據(jù)不一致或者有其他的手段發(fā)現(xiàn)和控制這種不一致的話今妄,可以關(guān)閉這個功能郑口,
以便在快照寫入失敗時,也能確保redis繼續(xù)接受新的寫請求盾鳞。

rdbcompression yes

對于存儲到磁盤中的快照犬性,可以設(shè)置是否進(jìn)行壓縮存儲。
如果是的話腾仅,redis會采用LZF算法進(jìn)行壓縮乒裆。如果你不想消耗CPU來進(jìn)行壓縮的話,
可以設(shè)置為關(guān)閉此功能推励,但是存儲在磁盤上的快照會比較大鹤耍。

rdbchecksum yes

在存儲快照后,我們還可以讓redis使用CRC64算法來進(jìn)行數(shù)據(jù)校驗验辞,但是這樣做會增加大約10%的性能消耗稿黄,
如果希望獲取到最大的性能提升,可以關(guān)閉此功能跌造。

dbfilename dump.rdb

設(shè)置快照的文件名

dir /var/redis/6379

設(shè)置快照文件的存放路徑杆怕,這個配置項一定是個目錄,而不能是文件名

五壳贪、REPLICATION

slaveof <masterip> <masterport>

主從復(fù)制陵珍,使用 slaveof 來讓一個 redis 實例成為另一個reids 實例的副本,默認(rèn)關(guān)閉
注意這個只需要在 slave 上配置

masterauth <master-password>

如果 master 需要密碼認(rèn)證违施,就在這里設(shè)置互纯,默認(rèn)不設(shè)置

slave-serve-stale-data yes

當(dāng)一個 slave 與 master 失去聯(lián)系,或者復(fù)制正在進(jìn)行的時候醉拓,
slave 可能會有兩種表現(xiàn):

  1. 如果為 yes 伟姐,slave 仍然會應(yīng)答客戶端請求收苏,但返回的數(shù)據(jù)可能是過時亿卤,
    或者數(shù)據(jù)可能是空的在第一次同步的時候
  2. 如果為 no ,在你執(zhí)行除了 info he salveof 之外的其他命令時鹿霸,
    slave 都將返回一個 "SYNC with master in progress" 的錯誤
slave-read-only yes

你可以配置一個 slave 實體是否接受寫入操作排吴。
通過寫入操作來存儲一些短暫的數(shù)據(jù)對于一個 slave 實例來說可能是有用的,
因為相對從 master 重新同步數(shù)而言懦鼠,據(jù)數(shù)據(jù)寫入到 slave 會更容易被刪除钻哩。
但是如果客戶端因為一個錯誤的配置寫入屹堰,也可能會導(dǎo)致一些問題。
從 redis 2.6 版起街氢,默認(rèn) slaves 都是只讀的扯键。

repl-diskless-sync no

主從數(shù)據(jù)復(fù)制是否使用無硬盤復(fù)制功能。
新的從站和重連后不能繼續(xù)備份的從站珊肃,需要做所謂的“完全備份”荣刑,即將一個RDB文件從主站傳送到從站。
這個傳送有以下兩種方式:
1)硬盤備份:redis主站創(chuàng)建一個新的進(jìn)程伦乔,用于把RDB文件寫到硬盤上厉亏。過一會兒,其父進(jìn)程遞增地將文件傳送給從站烈和。
2)無硬盤備份:redis主站創(chuàng)建一個新的進(jìn)程爱只,子進(jìn)程直接把RDB文件寫到從站的套接字,不需要用到硬盤招刹。
在硬盤備份的情況下恬试,主站的子進(jìn)程生成RDB文件。一旦生成疯暑,多個從站可以立即排成隊列使用主站的RDB文件忘渔。
在無硬盤備份的情況下,一次RDB傳送開始缰儿,新的從站到達(dá)后畦粮,需要等待現(xiàn)在的傳送結(jié)束,才能開啟新的傳送乖阵。
如果使用無硬盤備份宣赔,主站會在開始傳送之間等待一段時間(可配置,以秒為單位)瞪浸,希望等待多個子站到達(dá)后并行傳送儒将。
在硬盤低速而網(wǎng)絡(luò)高速(高帶寬)情況下,無硬盤備份更好对蒲。

repl-diskless-sync-delay 5

當(dāng)啟用無硬盤備份钩蚊,服務(wù)器等待一段時間后才會通過套接字向從站傳送RDB文件,這個等待時間是可配置的蹈矮。
這一點很重要砰逻,因為一旦傳送開始,就不可能再為一個新到達(dá)的從站服務(wù)泛鸟。從站則要排隊等待下一次RDB傳送蝠咆。因此服務(wù)器等待一段
時間以期更多的從站到達(dá)。
延遲時間以秒為單位,默認(rèn)為5秒刚操。要關(guān)掉這一功能闸翅,只需將它設(shè)置為0秒,傳送會立即啟動菊霜。

repl-ping-slave-period 10

從redis會周期性的向主redis發(fā)出PING包坚冀,你可以通過repl_ping_slave_period指令來控制其周期,默認(rèn)是10秒鉴逞。

repl-timeout 60

接下來的選項為以下內(nèi)容設(shè)置備份的超時時間:
1)從從站的角度遗菠,同步期間的批量傳輸?shù)腎/O
2)從站角度認(rèn)為的主站超時(數(shù)據(jù),ping)
3)主站角度認(rèn)為的從站超時(REPLCONF ACK pings)
確認(rèn)這些值比定義的repl-ping-slave-period要大华蜒,否則每次主站和從站之間通信低速時都會被檢測為超時辙纬。

repl-disable-tcp-nodelay no

同步之后是否禁用從站上的TCP_NODELAY
如果你選擇yes,redis會使用較少量的TCP包和帶寬向從站發(fā)送數(shù)據(jù)叭喜。但這會導(dǎo)致在從站增加一點數(shù)據(jù)的延時瓣窄。
Linux內(nèi)核默認(rèn)配置情況下最多40毫秒的延時捷兰。
如果選擇no,從站的數(shù)據(jù)延時不會那么多,但備份需要的帶寬相對較多澎粟。
默認(rèn)情況下我們將潛在因素優(yōu)化暮的,但在高負(fù)載情況下或者在主從站都跳的情況下介返,把它切換為yes是個好主意星压。

repl-backlog-size 1mb

設(shè)置備份的工作儲備大小。工作儲備是一個緩沖區(qū)溉知,當(dāng)從站斷開一段時間的情況時陨瘩,它替從站接收存儲數(shù)據(jù),
因此當(dāng)從站重連時级乍,通常不需要完全備份舌劳,只需要一個部分同步就可以,即把從站斷開時錯過的一部分?jǐn)?shù)據(jù)接收玫荣。
工作儲備越大甚淡,從站可以斷開并稍后執(zhí)行部分同步的斷開時間就越長。
只要有一個從站連接捅厂,就會立刻分配一個工作儲備贯卦。

repl-backlog-ttl 3600

主站有一段時間沒有與從站連接,對應(yīng)的工作儲備就會自動釋放焙贷。
這個選項用于配置釋放前等待的秒數(shù)撵割,秒數(shù)從斷開的那一刻開始計算,值為0表示不釋放盈厘。

slave-priority 100

從站優(yōu)先級是可以從redis的INFO命令輸出中查到的一個整數(shù)睁枕。當(dāng)主站不能正常工作時
redis sentinel使用它來選擇一個從站并將它提升為主站官边。
低優(yōu)先級的從站被認(rèn)為更適合于提升沸手,因此如果有三個從站優(yōu)先級分別是10外遇,
100,25契吉,sentinel會選擇優(yōu)先級為10的從站跳仿,因為它的優(yōu)先級最低。
然而優(yōu)先級值為0的從站不能執(zhí)行主站的角色捐晶,因此優(yōu)先級為0的從站永遠(yuǎn)不會被redis sentinel提升菲语。
默認(rèn)優(yōu)先級是100

min-slaves-to-write 3
min-slaves-max-lag 10

主站可以停止接受寫請求,當(dāng)與它連接的從站少于N個惑灵,滯后少于M秒山上,N個從站必須是在線狀態(tài)。
延遲的秒數(shù)必須<=所定義的值英支,延遲秒數(shù)是從最后一次收到的來自從站的ping開始計算佩憾。ping通常是每秒一次。
這一選項并不保證N個備份都會接受寫請求干花,但是會限制在指定秒數(shù)內(nèi)由于從站數(shù)量不夠?qū)е碌膶懖僮鱽G失的情況妄帘。
如果想要至少3個從站且延遲少于10秒,如上配置即可

slave-announce-ip 5.5.5.5
slave-announce-port 1234

Redis master能夠以不同的方式列出所連接slave的地址和端口池凄。
例如抡驼,“INFO replication”部分提供此信息,除了其他工具之外肿仑,Redis Sentinel還使用該信息來發(fā)現(xiàn)slave實例致盟。
此信息可用的另一個地方在masterser的“ROLE”命令的輸出中。
通常由slave報告的列出的IP和地址,通過以下方式獲得:
IP:通過檢查slave與master連接使用的套接字的對等體地址自動檢測地址尤慰。
端口:端口在復(fù)制握手期間由slavet通信勾邦,并且通常是slave正在使用列出連接的端口。
然而割择,當(dāng)使用端口轉(zhuǎn)發(fā)或網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)時眷篇,slave實際上可以通過(不同的IP和端口對)來到達(dá)。 slave可以使用以下兩個選項荔泳,以便向master報告一組特定的IP和端口蕉饼,
以便INFO和ROLE將報告這些值。
如果你需要僅覆蓋端口或IP地址玛歌,則沒必要使用這兩個選項昧港。

六、SECURITY

requirepass foobared

設(shè)置redis連接密碼

rename-command CONFIG ""

將命令重命名支子,為了安全考慮创肥,可以將某些重要的、危險的命令重命名。
當(dāng)你把某個命令重命名成空字符串的時候就等于取消了這個命令叹侄。

七巩搏、CLIENTS

maxclients 10000

設(shè)置客戶端最大并發(fā)連接數(shù),默認(rèn)無限制趾代,Redis可以同時打開的客戶端連接數(shù)為Redis進(jìn)程可以打開的最大文件
描述符數(shù)-32(redis server自身會使用一些)贯底,如果設(shè)置 maxclients為0
表示不作限制。當(dāng)客戶端連接數(shù)到達(dá)限制時撒强,Redis會關(guān)閉新的連接并向客戶端返回max number of clients reached錯誤信息

八禽捆、MEMORY MANAGEMENT

maxmemory <bytes>

指定Redis最大內(nèi)存限制,Redis在啟動時會把數(shù)據(jù)加載到內(nèi)存中飘哨,達(dá)到最大內(nèi)存后胚想,Redis會先嘗試清除已到期或即將到期的Key
當(dāng)此方法處理 后,仍然到達(dá)最大內(nèi)存設(shè)置芽隆,將無法再進(jìn)行寫入操作顿仇,但仍然可以進(jìn)行讀取操作。Redis新的vm機(jī)制摆马,
會把Key存放內(nèi)存臼闻,Value會存放在swap區(qū),格式:maxmemory <bytes>

maxmemory-policy noeviction

當(dāng)內(nèi)存使用達(dá)到最大值時囤采,redis使用的清楚策略述呐。有以下幾種可以選擇:
1)volatile-lru 利用LRU算法移除設(shè)置過過期時間的key (LRU:最近使用 Least Recently Used )
2)allkeys-lru 利用LRU算法移除任何key
3)volatile-random 移除設(shè)置過過期時間的隨機(jī)key
4)allkeys-random 移除隨機(jī)ke
5)volatile-ttl 移除即將過期的key(minor TTL)
6)noeviction noeviction 不移除任何key,只是返回一個寫錯誤 蕉毯,默認(rèn)選項

maxmemory-samples 5

LRU 和 minimal TTL 算法都不是精準(zhǔn)的算法乓搬,但是相對精確的算法(為了節(jié)省內(nèi)存)
隨意你可以選擇樣本大小進(jìn)行檢,redis默認(rèn)選擇3個樣本進(jìn)行檢測代虾,你可以通過maxmemory-samples進(jìn)行設(shè)置樣本數(shù)

九进肯、LAZY FREEING

lazyfree-lazy-eviction no (4.0新增)
lazyfree-lazy-expire no(4.0新增)
lazyfree-lazy-server-del no(4.0新增)
slave-lazy-flush no(4.0新增)

十、APPEND ONLY MODE

appendonly no

默認(rèn)redis使用的是rdb方式持久化棉磨,這種方式在許多應(yīng)用中已經(jīng)足夠用了江掩。但是redis如果中途宕機(jī),
會導(dǎo)致可能有幾分鐘的數(shù)據(jù)丟失乘瓤,根據(jù)save來策略進(jìn)行持久化环形,Append Only File是另一種持久化方式,
可以提供更好的持久化特性衙傀。Redis會把每次寫入的數(shù)據(jù)在接收后都寫入appendonly.aof文件抬吟,
每次啟動時Redis都會先把這個文件的數(shù)據(jù)讀入內(nèi)存里,先忽略RDB文件统抬。

appendfilename "appendonly.aof"

aof文件名

appendfsync always
appendfsync everysec
appendfsync no

aof持久化策略的配置
no表示不執(zhí)行fsync火本,由操作系統(tǒng)保證數(shù)據(jù)同步到磁盤危队,速度最快。
always表示每次寫入都執(zhí)行fsync钙畔,以保證數(shù)據(jù)同步到磁盤茫陆。
everysec表示每秒執(zhí)行一次fsync,可能會導(dǎo)致丟失這1s數(shù)據(jù)

no-appendfsync-on-rewrite no

在aof重寫或者寫入rdb文件的時候刃鳄,會執(zhí)行大量IO盅弛,此時對于everysec和always的aof模式來說钱骂,
執(zhí)行fsync會造成阻塞過長時間叔锐,no-appendfsync-on-rewrite字段設(shè)置為默認(rèn)設(shè)置為no。
如果對延遲要求很高的應(yīng)用见秽,這個字段可以設(shè)置為yes愉烙,否則還是設(shè)置為no,這樣對持久化特性來說這是更安全的選擇解取。
設(shè)置為yes表示rewrite期間對新寫操作不fsync,暫時存在內(nèi)存中,等rewrite完成后再寫入步责,默認(rèn)為no,建議yes禀苦。
Linux的默認(rèn)fsync策略是30秒蔓肯。可能丟失30秒數(shù)據(jù)振乏。

auto-aof-rewrite-percentage 100

aof自動重寫配置蔗包,當(dāng)目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進(jìn)行重寫,
即當(dāng)aof文件增長到一定大小的時候慧邮,Redis能夠調(diào)用bgrewriteaof對日志文件進(jìn)行重寫调限。
當(dāng)前AOF文件大小是上次日志重寫得到AOF文件大小的二倍(設(shè)置為100)時,自動啟動新的日志重寫過程误澳。

auto-aof-rewrite-min-size 64mb

設(shè)置允許重寫的最小aof文件大小耻矮,避免了達(dá)到約定百分比但尺寸仍然很小的情況還要重寫

aof-load-truncated yes

aof文件可能在尾部是不完整的,當(dāng)redis啟動的時候忆谓,aof文件的數(shù)據(jù)被載入內(nèi)存裆装。
重啟可能發(fā)生在redis所在的主機(jī)操作系統(tǒng)宕機(jī)后,尤其在ext4文件系統(tǒng)沒有加上data=ordered選項倡缠,出現(xiàn)這種現(xiàn)象
redis宕機(jī)或者異常終止不會造成尾部不完整現(xiàn)象米母,可以選擇讓redis退出,或者導(dǎo)入盡可能多的數(shù)據(jù)毡琉。
如果選擇的是yes铁瞒,當(dāng)截斷的aof文件被導(dǎo)入的時候,會自動發(fā)布一個log給客戶端然后load桅滋。
如果是no慧耍,用戶必須手動redis-check-aof修復(fù)AOF文件才可以身辨。

aof-use-rdb-preamble no (4.0新增)

十一、LUA SCRIPTING

lua-time-limit 5000

如果達(dá)到最大時間限制(毫秒)芍碧,redis會記個log煌珊,然后返回error。當(dāng)一個腳本超過了最大時限泌豆。
只有SCRIPT KILL和SHUTDOWN NOSAVE可以用定庵。第一個可以殺沒有調(diào)write命令的東西。
要是已經(jīng)調(diào)用了write踪危,只能用第二個命令殺

十二蔬浙、REDIS CLUSTER

cluster-enabled yes

集群開關(guān),默認(rèn)是不開啟集群模式

cluster-config-file nodes-6379.conf

集群配置文件的名稱贞远,每個節(jié)點都有一個集群相關(guān)的配置文件畴博,持久化保存集群的信息。
這個文件并不需要手動配置蓝仲,這個配置文件有Redis生成并更新俱病,每個Redis集群節(jié)點需要一個單獨的配置文件
請確保與實例運行的系統(tǒng)中配置文件名稱不沖突

cluster-node-timeout 15000

節(jié)點互連超時的閥值,集群節(jié)點超時毫秒數(shù)

cluster-slave-validity-factor 10

在進(jìn)行故障轉(zhuǎn)移的時候袱结,全部slave都會請求申請為master亮隙,但是有些slave可能與master斷開連接一段時間了,
導(dǎo)致數(shù)據(jù)過于陳舊垢夹,這樣的slave不應(yīng)該被提升為master溢吻。該參數(shù)就是用來判斷slave節(jié)點與master斷線的時間是否過長。
判斷方法是:
比較slave斷開連接的時間和(node-timeout * slave-validity-factor) + repl-ping-slave-period
如果節(jié)點超時時間為三十秒, 并且slave-validity-factor為10,
假設(shè)默認(rèn)的repl-ping-slave-period是10秒棚饵,即如果超過310秒slave將不會嘗試進(jìn)行故障轉(zhuǎn)移

cluster-migration-barrier 1

master的slave數(shù)量大于該值煤裙,slave才能遷移到其他孤立master上,如這個參數(shù)若被設(shè)為2噪漾,
那么只有當(dāng)一個主節(jié)點擁有2 個可工作的從節(jié)點時硼砰,它的一個從節(jié)點會嘗試遷移。

cluster-require-full-coverage yes

默認(rèn)情況下欣硼,集群全部的slot有節(jié)點負(fù)責(zé)题翰,集群狀態(tài)才為ok,才能提供服務(wù)诈胜。
設(shè)置為no豹障,可以在slot沒有全部分配的時候提供服務(wù)。
不建議打開該配置焦匈,這樣會造成分區(qū)的時候血公,小分區(qū)的master一直在接受寫請求,而造成很長時間數(shù)據(jù)不一致

十三缓熟、CLUSTER DOCKER/NAT support

cluster-announce-ip 10.1.1.5 (4.0新增)
cluster-announce-port 6379 (4.0新增)
cluster-announce-bus-port 6380 (4.0新增)

十四累魔、SLOW LOG

slowlog-log-slower-than 10000

slog log是用來記錄redis運行中執(zhí)行比較慢的命令耗時摔笤。
當(dāng)命令的執(zhí)行超過了指定時間,就記錄在slow log中垦写,slog log保存在內(nèi)存中吕世,所以沒有IO操作。
執(zhí)行時間比slowlog-log-slower-than大的請求記錄到slowlog里面梯投,單位是微秒命辖,所以1000000就是1秒。
注意分蓖,負(fù)數(shù)時間會禁用慢查詢?nèi)罩径В?則會強(qiáng)制記錄所有命令。

slowlog-max-len 128

慢查詢?nèi)罩鹃L度咆疗。當(dāng)一個新的命令被寫進(jìn)日志的時候漓帚,最老的那個記錄會被刪掉母债,這個長度沒有限制午磁。
只要有足夠的內(nèi)存就行,你可以通過 SLOWLOG RESET 來釋放內(nèi)存

十五毡们、LATENCY MONITOR

latency-monitor-threshold 0

延遲監(jiān)控功能是用來監(jiān)控redis中執(zhí)行比較緩慢的一些操作迅皇,用LATENCY打印redis實例在跑命令時的耗時圖表。
只記錄大于等于下邊設(shè)置的值的操作衙熔,0的話登颓,就是關(guān)閉監(jiān)視。
默認(rèn)延遲監(jiān)控功能是關(guān)閉的红氯,如果你需要打開框咙,也可以通過CONFIG SET命令動態(tài)設(shè)置。

十六痢甘、EVENT NOTIFICATION

notify-keyspace-events ""

鍵空間通知使得客戶端可以通過訂閱頻道或模式喇嘱,來接收那些以某種方式改動了 Redis 數(shù)據(jù)集的事件。因為開啟鍵空間通知功能需要消耗一些 CPU 塞栅,所以在默認(rèn)配置下者铜,該功能處于關(guān)閉狀態(tài)。
notify-keyspace-events 的參數(shù)可以是以下字符的任意組合放椰,它指定了服務(wù)器該發(fā)送哪些類型的通知:
K 鍵空間通知作烟,所有通知以 keyspace@ 為前綴
E 鍵事件通知,所有通知以 keyevent@ 為前綴
g DEL 砾医、 EXPIRE 拿撩、 RENAME 等類型無關(guān)的通用命令的通知
$ 字符串命令的通知
l 列表命令的通知
s 集合命令的通知
h 哈希命令的通知
z 有序集合命令的通知
x 過期事件:每當(dāng)有過期鍵被刪除時發(fā)送
e 驅(qū)逐(evict)事件:每當(dāng)有鍵因為 maxmemory 政策而被刪除時發(fā)送
A 參數(shù) g$lshzxe 的別名
輸入的參數(shù)中至少要有一個 K 或者 E,否則的話如蚜,不管其余的參數(shù)是什么压恒,都不會有任何 通知被分發(fā)头滔。

十七、ADVANCED CONFIG

hash-max-ziplist-entries 512

hash類型的數(shù)據(jù)結(jié)構(gòu)在編碼上可以使用ziplist和hashtable涎显。
ziplist的特點就是文件存儲(以及內(nèi)存存儲)所需的空間較小,在內(nèi)容較小時,性能和hashtable幾乎一樣坤检。
因此redis對hash類型默認(rèn)采取ziplist。如果hash中條目的條目個數(shù)或者value長度達(dá)到閥值,將會被重構(gòu)為hashtable期吓。
這個參數(shù)指的是ziplist中允許存儲的最大條目個數(shù)早歇,,默認(rèn)為512讨勤,建議為128

hash-max-ziplist-value 64

ziplist中允許條目value值最大字節(jié)數(shù)箭跳,默認(rèn)為64,建議為1024

list-max-ziplist-size -2

當(dāng)取正值的時候潭千,表示按照數(shù)據(jù)項個數(shù)來限定每個quicklist節(jié)點上的ziplist長度谱姓。比如,當(dāng)這個參數(shù)配置成5的時候刨晴,表示每個quicklist節(jié)點的ziplist最多包含5個數(shù)據(jù)項屉来。
當(dāng)取負(fù)值的時候,表示按照占用字節(jié)數(shù)來限定每個quicklist節(jié)點上的ziplist長度狈癞。這時茄靠,它只能取-1到-5這五個值,每個值含義如下:
-5: 每個quicklist節(jié)點上的ziplist大小不能超過64 Kb蝶桶。(注:1kb => 1024 bytes)
-4: 每個quicklist節(jié)點上的ziplist大小不能超過32 Kb慨绳。
-3: 每個quicklist節(jié)點上的ziplist大小不能超過16 Kb。
-2: 每個quicklist節(jié)點上的ziplist大小不能超過8 Kb真竖。(-2是Redis給出的默認(rèn)值)
-1: 每個quicklist節(jié)點上的ziplist大小不能超過4 Kb脐雪。

list-compress-depth 0

這個參數(shù)表示一個quicklist兩端不被壓縮的節(jié)點個數(shù)。
注:這里的節(jié)點個數(shù)是指quicklist雙向鏈表的節(jié)點個數(shù)恢共,而不是指ziplist里面的數(shù)據(jù)項個數(shù)战秋。
實際上,一個quicklist節(jié)點上的ziplist旁振,如果被壓縮获询,就是整體被壓縮的。
參數(shù)list-compress-depth的取值含義如下:
0: 是個特殊值拐袜,表示都不壓縮吉嚣。這是Redis的默認(rèn)值。
1: 表示quicklist兩端各有1個節(jié)點不壓縮蹬铺,中間的節(jié)點壓縮尝哆。
2: 表示quicklist兩端各有2個節(jié)點不壓縮,中間的節(jié)點壓縮甜攀。
3: 表示quicklist兩端各有3個節(jié)點不壓縮秋泄,中間的節(jié)點壓縮琐馆。
依此類推…
由于0是個特殊值,很容易看出quicklist的頭節(jié)點和尾節(jié)點總是不被壓縮的恒序,以便于在表的兩端進(jìn)行快速存取瘦麸。

set-max-intset-entries 512

數(shù)據(jù)量小于等于set-max-intset-entries用intset,大于set-max-intset-entries用set

zset-max-ziplist-entries 128

zset-max-ziplist-value 64
數(shù)據(jù)量小于等于zset-max-ziplist-entries用ziplist歧胁,大于zset-max-ziplist-entries用zset

hll-sparse-max-bytes 3000

value大小小于等于hll-sparse-max-bytes使用稀疏數(shù)據(jù)結(jié)構(gòu)(sparse)
大于hll-sparse-max-bytes使用稠密的數(shù)據(jù)結(jié)構(gòu)(dense)滋饲,一個比16000大的value是幾乎沒用的,
建議的value大概為3000喊巍。如果對CPU要求不高屠缭,對空間要求較高的,建議設(shè)置到10000左右

activerehashing yes

Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進(jìn)行重新hash崭参,可以降低內(nèi)存的使用呵曹。
當(dāng)你的使用場景中,有非常嚴(yán)格的實時性需要何暮,不能夠接受Redis時不時的對請求有2毫秒的延遲的話奄喂,把這項配置為no。
如果沒有這么嚴(yán)格的實時性要求郭卫,可以設(shè)置為yes砍聊,以便能夠盡可能快的釋放內(nèi)存

client-output-buffer-limit normal 0 0 0

對客戶端輸出緩沖進(jìn)行限制可以強(qiáng)迫那些不從服務(wù)器讀取數(shù)據(jù)的客戶端斷開連接背稼,用來強(qiáng)制關(guān)閉傳輸緩慢的客戶端贰军。
對于normal client,第一個0表示取消hard limit蟹肘,第二個0和第三個0表示取消soft limit词疼,normal client默認(rèn)取消限制,因為如果沒有尋問帘腹,他們是不會接收數(shù)據(jù)的

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

對于slave client和MONITER client贰盗,如果client-output-buffer一旦超過256mb,又或者超過64mb持續(xù)60秒阳欲,那么服務(wù)器就會立即斷開客戶端連接舵盈。

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

對于pubsub client,如果client-output-buffer一旦超過32mb球化,又或者超過8mb持續(xù)60秒秽晚,那么服務(wù)器就會立即斷開客戶端連接。

hz 10

redis執(zhí)行任務(wù)的頻率為1s除以hz

aof-rewrite-incremental-fsync yes

在aof重寫的時候筒愚,如果打開了aof-rewrite-incremental-fsync開關(guān)赴蝇,系統(tǒng)會每32MB執(zhí)行一次fsync。
這對于把文件寫入磁盤是有幫助的巢掺,可以避免過大的延遲峰值

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末句伶,一起剝皮案震驚了整個濱河市劲蜻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌考余,老刑警劉巖先嬉,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異楚堤,居然都是意外死亡坝初,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門钾军,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳄袍,“玉大人,你說我怎么就攤上這事吏恭∞中。” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵樱哼,是天一觀的道長哀九。 經(jīng)常有香客問我,道長搅幅,這世上最難降的妖魔是什么阅束? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮茄唐,結(jié)果婚禮上息裸,老公的妹妹穿的比我還像新娘。我一直安慰自己沪编,他們只是感情好呼盆,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚁廓,像睡著了一般访圃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上相嵌,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天腿时,我揣著相機(jī)與錄音,去河邊找鬼饭宾。 笑死批糟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捏雌。 我是一名探鬼主播跃赚,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纬傲?” 一聲冷哼從身側(cè)響起满败,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叹括,沒想到半個月后算墨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡汁雷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年净嘀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侠讯。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡挖藏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厢漩,到底是詐尸還是另有隱情膜眠,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布溜嗜,位于F島的核電站宵膨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炸宵。R本人自食惡果不足惜辟躏,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望土全。 院中可真熱鬧捎琐,春花似錦、人聲如沸涯曲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幻件。三九已至,卻和暖如春蛔溃,著一層夾襖步出監(jiān)牢的瞬間绰沥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工贺待, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留徽曲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓麸塞,卻偏偏與公主長得像秃臣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 在上一篇文章中奥此,介紹了Redis內(nèi)存模型弧哎,從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識——持久化稚虎、復(fù)...
    Java架構(gòu)閱讀 2,314評論 3 21
  • ## Generated by install_server.sh ## # Redis configuratio...
    依然飯?zhí)?/span>閱讀 2,029評論 0 5
  • Redis 配置文件示例 注意:想要讀取配置文件撤嫩,Redis的第一個參數(shù)必須是文件的路徑 ./redis-serv...
    起個名忒難閱讀 1,198評論 0 1
  • 1.1 資料 ,最好的入門小冊子蠢终,可以先于一切文檔之前看序攘,免費。 作者Antirez的博客寻拂,Antirez維護(hù)的R...
    JefferyLcm閱讀 17,056評論 1 51
  • 文章已經(jīng)放到github上 程奠,如果對您有幫助 請給個star[https://github.com/qqxuanl...
    尼爾君閱讀 2,286評論 0 22