redis配置_Redis配置大全(三)
“?點(diǎn)擊關(guān)注Coding小暮,獲取更多優(yōu)質(zhì)內(nèi)容哦”
Redis配置文件的講解,今天將會(huì)全部講完。先來(lái)個(gè)前文回顧:
吐血整理Redis配置大全(一)
Redis配置大全(二)
本篇內(nèi)容包含:
主動(dòng)碎片整理
主動(dòng)碎片整理允許Redis服務(wù)器壓縮內(nèi)存中的小分配和數(shù)據(jù)回收之間的空間,從而允許收回內(nèi)存。需要了解的重要事項(xiàng):
啟用活動(dòng)碎片整理
active-defrag-ignore-bytes?100mb啟動(dòng)活動(dòng)碎片整理所需的碎片浪費(fèi)最少
active-defrag-threshold-lower?10啟動(dòng)活動(dòng)碎片整理的最小碎片百分比
active-defrag-threshold-upper?100內(nèi)存碎片超過(guò) 100%,則盡最大努力整理
active-defrag-cycle-min?25磁盤碎片整理的最小工作量(CPU百分比)
active-defrag-cycle-max?75磁盤碎片整理的最大工作量(CPU百分比)
安全
requirepass?foobared要求客戶端在執(zhí)行任何命令之前,必須先執(zhí)行 AUTH?,在不信任其他人可以訪問(wèn)運(yùn)行redis服務(wù)器的主機(jī)的環(huán)境中,這可能很有用。
rename-command?CONFIG?""命令重命名。如果將一個(gè)命令修改為空字符串,則改命令就相當(dāng)于被抹殺掉了。在生產(chǎn)環(huán)境中,會(huì)有部分命令使用 rename-command 來(lái)重置掉,例如:keys、flushdb、flushall、config等等。
客戶端配置
maxclients?10000設(shè)置同時(shí)連接的客戶端的最大數(shù)量。默認(rèn)情況下,此限制設(shè)置為10000個(gè)客戶端,但是如果Redis服務(wù)器無(wú)法讀取配置進(jìn)程文件限制以允許指定的限制,則允許的最大客戶端數(shù)將設(shè)置為當(dāng)前文件限制減去32(因?yàn)镽edis保留了一些文件描述符供內(nèi)部使用)。一旦達(dá)到限制,Redis將關(guān)閉所有新連接,并發(fā)送錯(cuò)誤“max number of clients reached”。
懶惰刪除
Redis有兩個(gè)原語(yǔ)來(lái)刪除鍵。一個(gè)叫做DEL,是對(duì)象的阻塞刪除。這意味著服務(wù)器停止處理新命令,以同步方式回收與對(duì)象關(guān)聯(lián)的所有內(nèi)存。如果刪除的鍵與一個(gè)小對(duì)象相關(guān)聯(lián),那么執(zhí)行DEL命令所需的時(shí)間非常少,與Redis中大多數(shù)其他O(1)或O(log_N)命令相當(dāng)。但是,如果該鍵與包含數(shù)百萬(wàn)個(gè)元素的聚合值相關(guān)聯(lián),服務(wù)器可能會(huì)阻塞很長(zhǎng)時(shí)間(甚至幾秒鐘)以完成操作。出于上述原因,Redis還提供了非阻塞刪除原語(yǔ),如UNLINK(非阻塞DEL)和FLUSHALL和FLUSHDB命令的ASYNC選項(xiàng),以便在后臺(tái)回收內(nèi)存。這些命令在固定的時(shí)間內(nèi)執(zhí)行。另一個(gè)線程將盡可能快地遞增地釋放后臺(tái)的對(duì)象。Redis在以下場(chǎng)景中會(huì)主動(dòng)刪除對(duì)象:
在上述所有情況下,刪除對(duì)象的方式默認(rèn)是阻塞的,比如:DEL 命令。然而,你可以具體配置每種情況,以代替以非阻塞的方式(UNLINK 命令)釋放內(nèi)存。
lazyfree-lazy-eviction?nolazyfree-lazy-expire?no
lazyfree-lazy-server-del?no
slave-lazy-flush?no
RDB快照
save?900?1save?300?10
save?60?10000
快照創(chuàng)建的頻率。saveN??M,seconds 秒 changes 改動(dòng), 如果在 N 秒內(nèi),有M次改動(dòng),則開(kāi)始創(chuàng)建快照。
stop-writes-on-bgsave-error?yes當(dāng)RDB保存故障時(shí),不影響正常的寫(xiě)入
rdbcompression?yes.rdb數(shù)據(jù)庫(kù)時(shí)使用LZF壓縮字符串對(duì)象
rdbchecksum?yesCRC64校驗(yàn),使該格式更能抵抗損壞,但是在保存和加載RDB文件時(shí)會(huì)付出一定的性能損耗(大約10%),因此可以禁用該格式以獲得最佳性能。
dbfilename?dump.rdb備份數(shù)據(jù)的文件名
dir?./備份文件目錄。該配置指定了 ${dbfilename} 所在的目錄,AOF生成的 Append 文件也會(huì)存儲(chǔ)在此目錄。
AOF追加模式
追加模式是在.aof文件中追加寫(xiě)入執(zhí)行過(guò)的命令。這種備份方案更加的安全,如果發(fā)生服務(wù)斷電,Redis最多只是丟失了1秒鐘的寫(xiě)操作。AOF和RDB持久性可以同時(shí)啟用,
appendonly?yes啟用aof
appendfilename?"appendonly.aof"aof文件名
#?appendfsync?alwaysappendfsync?everysec
#?appendfsync?no
fsync()調(diào)用告訴操作系統(tǒng)立即將數(shù)據(jù)寫(xiě)入磁盤,而不是等待輸出緩沖區(qū)中的更多數(shù)據(jù)。有些操作系統(tǒng)真的會(huì)刷新磁盤上的數(shù)據(jù),有些其他操作系統(tǒng)只會(huì)嘗試盡快這樣做。Redis支持三種不同的模式:
- no:不要fsync,讓操作系統(tǒng)在需要的時(shí)候刷新數(shù)據(jù),性能較高。
- always: fsync每次寫(xiě)入僅追加日志后。性能會(huì)有所損耗,安全性更高。
- everysec: fsync每秒鐘只進(jìn)行一次。折中方案。
如果不確定應(yīng)該使用哪個(gè),使用“everysec”。
no-appendfsync-on-rewrite?no當(dāng)AOF fsync策略設(shè)置為always或everysec,后臺(tái)保存進(jìn)程(后臺(tái)保存或AOF log后臺(tái)重寫(xiě))對(duì)磁盤執(zhí)行大量I/O操作時(shí),在某些Linux配置中,Redis可能會(huì)在fsync()調(diào)用上阻塞過(guò)長(zhǎng)時(shí)間。注意,目前還沒(méi)有解決這個(gè)問(wèn)題的辦法,因?yàn)榧词乖诓煌木€程中執(zhí)行fsync也會(huì)阻塞同步 write(2) ?調(diào)用。為了緩解這個(gè)問(wèn)題,可以使用 no-appendfsync-on-rewrite 來(lái)防止在BGSAVE或BGREWRITEAOF正在運(yùn)行時(shí)在主進(jìn)程中調(diào)用fsync()。如果你有延遲問(wèn)題,把它改為“yes”,否則就保留“no”。從安全性的角度來(lái)看,這是最安全的選擇。
auto-aof-rewrite-percentage?100auto-aof-rewrite-min-size?64mb
設(shè)置aof文件滾動(dòng)大小,如果為0的話,就是禁止?jié)L動(dòng)生生aof文件
aof-load-truncated?yesRedis啟動(dòng)時(shí),可能會(huì)發(fā)現(xiàn)AOF文件在最后被截?cái)唷_@種情況可能發(fā)生在Redis所在的系統(tǒng)崩潰時(shí),特別是在沒(méi)有使用data=ordered選項(xiàng)的情況下。當(dāng)這種情況發(fā)生時(shí),Redis可以退出并拋出錯(cuò)誤,或者加載盡可能多的數(shù)據(jù)(現(xiàn)在的默認(rèn)值)并在最后發(fā)現(xiàn)AOF文件被截?cái)鄷r(shí)啟動(dòng)。下面的選項(xiàng)控制這種行為。如果aof-load-truncated設(shè)置為yes,則將加載截短的AOF文件,并且Redis服務(wù)器將開(kāi)始發(fā)出日志以將事件通知用戶。否則,如果該選項(xiàng)設(shè)置為no,則服務(wù)器將中止并顯示錯(cuò)誤并拒絕啟動(dòng)。如果該選項(xiàng)設(shè)置為no,則用戶需要在重新啟動(dòng)服務(wù)器之前使用“redis-check-aof”程序修復(fù)AOF文件。
aof-use-rdb-preamble?no當(dāng)重寫(xiě)AOF文件時(shí),Redis可以在AOF文件中使用RDB前綴來(lái)更快地重寫(xiě)和恢復(fù)。當(dāng)打開(kāi)這個(gè)選項(xiàng)時(shí),重寫(xiě)的AOF文件由兩個(gè)不同的節(jié)組成:
[RDB file][AOF fail]
Redis啟動(dòng)時(shí)候,先加載RDB文件,在根據(jù)RDB的尾部時(shí)間加載AOF文件。
LUA腳本
lua-time-limit?5000Lua腳本的最大執(zhí)行時(shí)間(毫秒)。如果達(dá)到了最大執(zhí)行時(shí)間,Redis會(huì)記錄一個(gè)腳本在超過(guò)最大允許時(shí)間后仍在執(zhí)行,并開(kāi)始回復(fù)一個(gè)錯(cuò)誤的查詢。當(dāng)長(zhǎng)時(shí)間運(yùn)行的腳本超過(guò)最大執(zhí)行時(shí)間時(shí),可以使用KILL和SHUTDOWN NOSAVE命令終止。第一個(gè)可以用來(lái)停止尚未調(diào)用write命令的腳本。第二種方法是在腳本已經(jīng)發(fā)出了write命令但用戶不想等待腳本自然終止的情況下停止的唯一方法。將其設(shè)置為0或負(fù)值,可以無(wú)限制地執(zhí)行而不發(fā)出警告。
延遲監(jiān)視器
latency-monitor-threshold?0Redis延遲監(jiān)視子系統(tǒng)在運(yùn)行時(shí)采樣不同的操作,以便收集與Redis實(shí)例可能的延遲來(lái)源相關(guān)的數(shù)據(jù)。通過(guò)LATENCY命令,可以打印圖形并獲得報(bào)告的用戶可以使用此信息。默認(rèn)值為0表示關(guān)閉延遲監(jiān)視器。如果在生產(chǎn)環(huán)境中需要臨時(shí)啟用的話,可以使用:
CONFIG SET latency-monitor-threshold ?命令啟用延遲監(jiān)控器。
總結(jié)
以上是生活随笔為你收集整理的redis配置_Redis配置大全(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 雷蛇灯光配置文件_消费降级?不我只是体验
- 下一篇: postgresql update使用别