Redis配置文件常用配置消息解说--版本5.0.9
生活随笔
收集整理的這篇文章主要介紹了
Redis配置文件常用配置消息解说--版本5.0.9
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
單位
配置文件中的uint單位對(duì)大小寫不敏感
引用包 INCLUDES
網(wǎng)絡(luò) NETWORK
# 指定 redis 只接收來自于該IP地址的請(qǐng)求,如果不進(jìn)行設(shè)置,那么將處理所有請(qǐng)求。 bind 127.0.0.1 # 是否開啟保護(hù)模式,默認(rèn)開啟。要是配置里沒有指定bind和密碼。開啟該參數(shù)后,redis只會(huì)本地進(jìn)行訪問,拒絕外部訪問。開啟了密碼和bind的時(shí)候可以開啟。否則最好關(guān)閉,設(shè)為no。 protected-mode yes # redis進(jìn)行監(jiān)聽的端口號(hào)。 port 6379 # TCP連接中已三次握手隊(duì)列的長度,當(dāng)然此值必須不大于Linux系統(tǒng)定義的/proc/sys/net/core/somaxconn值,默認(rèn)是511,而Linux的默認(rèn)參數(shù)值是128。 # 當(dāng)系統(tǒng)并發(fā)量大并且客戶端速度緩慢的時(shí)候,可以將兩個(gè)參數(shù)一起參考。內(nèi)核參數(shù)默認(rèn)值一般是128,對(duì)于負(fù)載很大的服務(wù)程序來說是遠(yuǎn)遠(yuǎn)的不夠。一般會(huì)將它修改為2048或者更大。 # 在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在終端中執(zhí)行 sysctl -p。 tcp-backlog 511# 此參數(shù)為設(shè)置客戶端空閑超過timeout,服務(wù)端會(huì)斷開連接,為0則服務(wù)端不會(huì)主動(dòng)斷開連接,不能小于0,默認(rèn)為0。 timeout 0# tcp 保活參數(shù)。如果不為為0,就使用配置tcp的SO_KEEPALIVE值。 # 使用keepalive有兩個(gè)好處: # 1. 檢測掛掉的對(duì)端。 # 2. 降低中間設(shè)備出問題而導(dǎo)致網(wǎng)絡(luò)看似連接卻已經(jīng)與對(duì)端端口的問題。 # 在Linux內(nèi)核中,設(shè)置了keepalive,redis會(huì)定時(shí)給對(duì)端發(fā)送ack。檢測到對(duì)端關(guān)閉需要兩倍的設(shè)置值。 tcp-keepalive 300通用 GENERAL
# 以保護(hù)進(jìn)程的方式運(yùn)行,默認(rèn)是no,需要自己開通,否則一退出進(jìn)程就結(jié)束了。 daemonize yes # 管理守護(hù)進(jìn)程,默認(rèn)是no,一般不用動(dòng)。 supervised no # 如果以后臺(tái)的方式運(yùn)行,就需要指定一個(gè)pid文件。 pidfile /var/run/redis_6379.pid # 日志級(jí)別。debug,verbose,notice,warn。 loglevel notice# 指定日志文件目錄。 # 為""時(shí),日志會(huì)打印到標(biāo)準(zhǔn)輸出設(shè)備。 # 后臺(tái)運(yùn)行的redis標(biāo)準(zhǔn)輸出是/dev/null logfile /usr/local/redis/redis.log 日志的文件位置名# 打開記錄syslog功能。 # syslog-enabled no# syslog的標(biāo)識(shí)符。 # syslog-ident redis# 日志來源、設(shè)備。 # syslog-facility local0# 數(shù)據(jù)庫的數(shù)量,默認(rèn)使用的數(shù)據(jù)庫是0。可以通過”SELECT 【數(shù)據(jù)庫序號(hào)】“命令選擇一個(gè)數(shù)據(jù)庫,序號(hào)從0開始。 databases 16#總是顯示logo,默認(rèn)yes。 always-show-logo yes快照 SNAPSHOTTING
# 900秒中至少有1個(gè)key進(jìn)行了修改,就會(huì)進(jìn)行持久化。 save 900 1# 300秒中至少有10個(gè)key進(jìn)行了修改,就會(huì)進(jìn)行持久化。 save 300 10 # 60秒中至少有10000個(gè)key進(jìn)行了修改,就會(huì)進(jìn)行持久化。 save 60 10000 # 持久化出錯(cuò)是否繼續(xù)工作,默認(rèn)no,需要開啟,可以通過info中的rdb_last_bgsave_status了解RDB持久化是否有錯(cuò)誤。 stop-writes-on-bgsave-error yes # 壓縮rdb文件,默認(rèn)為yes。Redis采用LZF壓縮方式,但占用了一點(diǎn)CPU的時(shí)間。若關(guān)閉該選項(xiàng),但會(huì)導(dǎo)致數(shù)據(jù)庫文件變的巨大。建議開啟。 rdbcompression yes# 在保存rdb的時(shí)候,進(jìn)行錯(cuò)誤的檢查校驗(yàn),這很有利于文件的容錯(cuò)性,但是在保存rdb文件的時(shí)候,會(huì)有大概10%的性能損耗,所以如果追求高性能,可以設(shè)為no。 rdbchecksum yes # rdb的文件名,一般使用默認(rèn)。 dbfilename dump.rdb # rdb文件保存的目錄。 dir ./復(fù)制 REPLICATION
# 復(fù)制選項(xiàng),slave復(fù)制對(duì)應(yīng)的master。 # replicaof <masterip> <masterport># 如果master設(shè)置了密碼驗(yàn)證,那么slave要連上master,需要有master的密碼才行。masterauth就是用來配置master的密碼,這樣可以在連上master后進(jìn)行認(rèn)證。 # masterauth <master-password># 當(dāng)slave同master失去連接或者復(fù)制正在進(jìn)行,slave有兩種運(yùn)行方式。 # 1. 如果slave-serve-stale-data設(shè)置為yes(默認(rèn)設(shè)置),slave會(huì)繼續(xù)響應(yīng)客戶端的請(qǐng)求。 # 2. 如果slave-serve-stale-data設(shè)置為no,那么當(dāng)接收到INFO、replicaOF、AUTH、PING、SHUTDOWN、REPLCONF、ROLE、CONFIG、SUBSCRIBE、UNSUBSCRIBE、PSUBSCRIBE、PUNSUBSCRIBE、PUBLISH, PUBSUB、COMMAND、POST、HOST和LATENCY命令之外的任何請(qǐng)求都會(huì)返回一個(gè)”SYNC with master in progress”錯(cuò)誤。 replica-serve-stale-data yes# 作為從服務(wù)器,默認(rèn)情況下是只讀的(yes),可以修改成NO,用于寫(不建議)。 replica-read-only yes# 是否使用socket方式復(fù)制數(shù)據(jù)。目前redis復(fù)制提供兩種方式,disk和socket。 # 如果新的slave連上來或者重連的slave無法部分同步,就會(huì)執(zhí)行全量同步,master會(huì)生成rdb文件。 # 1. Disk-backed : master創(chuàng)建一個(gè)新的進(jìn)程把rdb文件保存到磁盤,再把磁盤上的rdb文件傳遞給slave。 # 2. Diskless : 是master創(chuàng)建一個(gè)新的進(jìn)程,直接把rdb文件以socket的方式發(fā)給slave。 # Disk-backed時(shí),當(dāng)一個(gè)rdb保存的過程中,多個(gè)slave都能共享這個(gè)rdb文件。 # Diskless的方式就得一個(gè)個(gè)slave順序復(fù)制。在磁盤速度緩慢,網(wǎng)速快的情況下推薦用socket方式。 repl-diskless-sync no# diskless復(fù)制的延遲時(shí)間,防止設(shè)置為0。一旦復(fù)制開始,節(jié)點(diǎn)不會(huì)再接收新slave的復(fù)制請(qǐng)求直到下一個(gè)rdb傳輸。所以最好等待一段時(shí)間,等更多的slave連上來。 repl-diskless-sync-delay 5# slave根據(jù)指定的時(shí)間間隔向服務(wù)器發(fā)送ping請(qǐng)求。時(shí)間間隔可以通過repl_ping_slave_period來設(shè)置,默認(rèn)10秒。 # repl-ping-slave-period 10# 復(fù)制連接超時(shí)時(shí)間。master和slave都有超時(shí)時(shí)間的設(shè)置。master檢測到slave上次發(fā)送的時(shí)間超過repl-timeout,即認(rèn)為slave離線,清除該slave信息。slave檢測到上次和master交互的時(shí)間超過repl-timeout,則認(rèn)為master離線。需要注意的是repl-timeout需要設(shè)置一個(gè)比repl-ping-slave-period更大的值,不然會(huì)經(jīng)常檢測到超時(shí)。 # repl-timeout 60# 是否禁止復(fù)制tcp鏈接的tcp-nodelay參數(shù)。默認(rèn)是no,即使用tcp nodelay。如果master設(shè)置了yes來禁止tcp nodelay設(shè)置,在把數(shù)據(jù)復(fù)制給slave的時(shí)候,會(huì)減少包的數(shù)量和更小的網(wǎng)絡(luò)帶寬。但是這也可能帶來數(shù)據(jù)的延遲。默認(rèn)我們推薦更小的延遲,但是在數(shù)據(jù)量傳輸很大的場景下,建議選擇yes。 repl-disable-tcp-nodelay no# 復(fù)制緩沖區(qū)大小,這是一個(gè)環(huán)形復(fù)制緩沖區(qū),用來保存最新復(fù)制的命令。這樣在slave離線的時(shí)候,不需要完全復(fù)制master的數(shù)據(jù),如果可以執(zhí)行部分同步,只需要把緩沖區(qū)的部分?jǐn)?shù)據(jù)復(fù)制給slave,就能恢復(fù)正常復(fù)制狀態(tài)。緩沖區(qū)的大小越大,slave離線的時(shí)間可以更長,復(fù)制緩沖區(qū)只有在有slave連接的時(shí)候才分配內(nèi)存。master沒有slave一段時(shí)間后,內(nèi)存會(huì)被釋放出來,默認(rèn)1m。 # repl-backlog-size 1mb# master沒有slave一段時(shí)間會(huì)釋放復(fù)制緩沖區(qū)的內(nèi)存,repl-backlog-ttl用來設(shè)置該時(shí)間長度。單位為秒。 # repl-backlog-ttl 3600# 當(dāng)master不可用,Sentinel會(huì)根據(jù)slave的優(yōu)先級(jí)選舉一個(gè)master。最低的優(yōu)先級(jí)的slave,當(dāng)選master。而配置成0,將永遠(yuǎn)不會(huì)被選舉。 replica-priority 100# redis提供了可以讓master停止寫入的方式,如果配置了min-replicas-to-write,當(dāng)健康的slave個(gè)數(shù)小于N,mater就禁止寫入。master最少得有N個(gè)健康的slave存活才能執(zhí)行寫命令。這個(gè)配置雖然不能保證N個(gè)slave都一定能接收到master的寫操作,但是能避免沒有足夠健康的slave的時(shí)候,master不能寫入來避免數(shù)據(jù)丟失。設(shè)置為0是關(guān)閉該功能。 # min-replicas-to-write 3# 延遲小于min-replicas-max-lag秒的slave才認(rèn)為是健康的slave。 # min-replicas-max-lag 10安全 SECURITY
# 讓用戶使用AUTH命令來認(rèn)證密碼,才能使用其他命令。這讓redis可以使用在不受信任的網(wǎng)絡(luò)中。為了保持向后的兼容性,可以注釋該命令,因?yàn)榇蟛糠钟脩粢膊恍枰J(rèn)證。使用requirepass的時(shí)候需要注意,因?yàn)閞edis太快了,每秒可以認(rèn)證15w次密碼,簡單的密碼很容易被攻破,所以最好使用一個(gè)更復(fù)雜的密碼。默認(rèn)沒有密碼。 # requirepass foobared 例子: 127.0.0.1:6379> CONFIG GET requirepass 1) "requirepass" 2) "" 127.0.0.1:6379> CONFIG SET requirepass "111111" OK 127.0.0.1:6379> ping (error) NOAUTH Authentication required. 127.0.0.1:6379> AUTH 111111 OK 127.0.0.1:6379> ping PONG# 把危險(xiǎn)的命令給修改成其他名稱。 # 比如CONFIG命令可以重命名為一個(gè)很難被猜到的命令,這樣用戶不能使用,而內(nèi)部工具還能接著使用。 # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # 可以設(shè)置成一個(gè)空的值,可以禁止一個(gè)命令。 # rename-command CONFIG ""限制 CLIENTS
#設(shè)置最大連客戶端接數(shù)。 maxclients內(nèi)存 MEMORY
#設(shè)置最大的內(nèi)存容量。 maxmemory <bytes> #內(nèi)存超出配置策略。 maxmemory-policy noeviction redis內(nèi)存滿了的淘汰策略 1. volatile-lru:只對(duì)設(shè)置了過期時(shí)間的key進(jìn)行LRU(默認(rèn)值) 2. allkeys-lru : 刪除lru算法的key 3. volatile-random:隨機(jī)刪除即將過期key 4. allkeys-random:隨機(jī)刪除 5. volatile-ttl : 刪除即將過期的 6. noeviction : 永不過期,返回錯(cuò)誤 # 上面的這些驅(qū)逐策略,如果redis沒有合適的key驅(qū)逐,對(duì)于寫命令,還是會(huì)返回錯(cuò)誤。redis將不再接收寫請(qǐng)求,只接收get請(qǐng)求。寫命令包括:set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort。# lru檢測的樣本數(shù)。使用lru或者ttl淘汰算法,從需要淘汰的列表中隨機(jī)選擇sample個(gè)key,選出閑置時(shí)間最長的key移除。 # maxmemory-samples 5# 是否開啟salve的最大內(nèi)存。 # replica-ignore-maxmemory yesAOF APPEND ONLY
# 默認(rèn)是不開啟aof模式,默認(rèn)是rdb模式,在大部分情況下,rdb基本夠用 appendonly no # 持久化文件的名字 appendfilename "appendonly.aof"# 每次都會(huì)同步,消耗性能,比較慢 # appendfsync always# 每秒同步一次,可能會(huì)丟失這1s的數(shù)據(jù) appendfsync everysec # 不執(zhí)行同步,這個(gè)時(shí)候作系統(tǒng)自己同步數(shù)據(jù),速度是最快的 # appendfsync no總結(jié)
以上是生活随笔為你收集整理的Redis配置文件常用配置消息解说--版本5.0.9的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BaseActivity与BaseFra
- 下一篇: IOS之笑脸app