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