網站首頁 編程語言 正文
文章目錄
- 常用配置
- 進階配置
- 主從復制
- 安全
- 限制 CLIENTS
- RDB模式相關配置
- AOF模式 appendonly配置
- slowlog
- INCLUDES
- vm相關
- 其他配置
常用配置
Redis支持很多的參數配置,但都有默認值。daemonize
默認情況下,redis 不是在后臺運行的,如果需要在后臺運行,把該項的值更改為yes。protected-mode
保護模式,protected-mode設置為yes的情況下,為了我們的應用服務可以正常訪問Redis,我們需要設置Redis的bind參數或者密碼參數requirepass。bind
指定 Redis只接收來自于該IP地址的請求,如果設置成0.0.0.0表示接收所有ip請求,不建議使用。port
監聽端口,默認為6379。databases
設置數據庫的個數,默認使用的數據庫是0。save
設置Redis進行數據庫鏡像備份的頻率。
#如果900秒內至少1個key發生變化(新增、修改和刪除),則重寫rdb文件;
save 900 1
#如果每300秒內至少10個key發生變化(新增、修改和刪除),則重寫rdb文件;
save 300 10
#如果每60秒內至少10000個key發生變化(新增、修改和刪除),則重寫rdb文件。
save 60 10000
dbfilename
鏡像備份文件的文件名。dir
數據庫鏡像備份的文件放置的路徑。requirepass
設置客戶端連接后進行任何其他指定前需要使用的密碼。maxclients
限制同時連接的客戶數量。maxmemory
設置redis 能夠使用的最大內存。logfile
日志文件名。
進階配置
stop-writes-on-bgsave-error
持久化如果出錯,是否還需要繼續工作。loglevel
指定日志記錄級別。
Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose
debug 記錄很多信息,用于開發和測試
varbose 有用的信息,不像debug會記錄那么多
notice 普通的verbose,常用于生產環境
warning 只有非常重要或者嚴重的信息會記錄到日志
timeout
設置客戶端連接時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那么關閉該連接,0是關閉此設置。
主從復制
slaveof <masterip> <masterport>
主從復制。設置該數據庫為其他數據庫的從數據庫。設置當本機為slave服務時,設置master服務的IP地址及端口,在Redis啟動時,它會自動從master進行數據同步。這里永久性的設置主機IP(設置后自己視為從節點)masterauth <master-password>
當master服務設置了密碼保護時(用requirepass制定的密碼)slave服務連接master的密碼。slave-serve-stale-data
當從庫同主機失去連接或者復制正在進行,從庫有兩種運行方式:
- 如果slave-serve-stale-data設置為yes(默認設置),從庫會繼續相應客戶端的請求
- 如果slave-serve-stale-data是指為no,出去INFO和SLAVOF命令之外的任何請求都會返回一個錯誤"SYNC with master in progress"
repl-ping-slave-period
從庫會按照一個時間間隔向主庫發送PINGs.可以通過repl-ping-slave-period設置這個時間間隔,默認是10秒。
總結就是上面間隔多少秒發送一次檢測存活的pingPong信號,下面repl-timeout就是判定發送這個信號后的返回超時時間。repl-timeout
設置主庫批量數據傳輸時間或者ping回復時間間隔,默認值是60秒。一定要確保repl-timeout大于repl-ping-slave-period。
安全
requirepass
設置客戶端連接后進行任何其他指定前需要使用的密碼。警告:因為redis速度相當快,所以在一臺比較好的服務器下,一個外部的用戶可以在一秒鐘進行150K次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解。rename-command
命令重命名。
在一個共享環境下可以重命名相對危險的命令。比如把CONFIG重名為一個不容易猜測的字符。
舉例:
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
如果想刪除一個命令,直接把它重命名為一個空字符""即可,如下:
rename-command CONFIG “”
限制 CLIENTS
maxclients
限制同時連接的客戶數量。maxmemory
設置redis 能夠使用的最大內存。maxmemory-policy
內存達到上限的處理策略,有以下幾種策略
volatile-lru :利用 LRU 算法移除設置過過期時間的 key 。
volatile-random :隨機移除設置過過期時間的 key 。
volatile-ttl :移除即將過期的 key ,根據最近過期時間來刪除(輔以 TTL )
allkeys-lru :利用 LRU 算法移除任何 key 。
allkeys-random :隨機移除任何 key 。
noeviction :不移除任何 key ,只是返回一個寫錯誤。
默認是:maxmemory-policy volatile-lru
LRU 和 minimal TTL 算法都不是精準的算法,但是相對精確的算法(為了節省內存),隨意你可以選擇樣本大小進行檢測。
RDB模式相關配置
rdbcompression
存儲至本地數據庫時(持久化到rdb文件)是否壓縮數據,需要消耗一些cpu的資源,默認為yesrdbchecksum
保存rdb文件的時候,進行錯誤的檢查校驗。dir
rdb文件保存的目錄,如:/www/server/redis/dbfilename
RDB后,本地持久化數據庫文件名,默認值為dump.rdb(持久化的數據都會保存在這個文件里然后準備刷盤)
AOF模式 appendonly配置
appendonly
默認是no,不開啟AOF模式的,默認是使用RDB方式持久化的,在大部分使用的情況下,RDB完全夠用了appendfilename
持久化的文件的名字,如:“appendonly.aof”appendfsync
同步策略。
#appendfsync always #每次修改都會 sync 消耗性能
appendfsync everysec #每秒執一次 sync,可能會丟失這1s的數據
#appendfsync no #不執行 sync 這個時候操作系統自己同步數據,數據最快
AOF策略設置為always或者everysec時,后臺處理進程(后臺保存或者AOF日志重寫)會執行大量的I/O操作。在某些Linux配置中會阻止過長的fsync()請求。注意現在沒有任何修復,即使fsync在另外一個線程進行處理。為了減緩這個問題,可以設置下面這個參數no-appendfsync-on-rewrite。
AOF 自動重寫,當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日志文件進行重寫
它是這樣工作的:Redis會記住上次進行些日志后文件的大小(如果從開機以來還沒進行過重寫,那日子大小在開機的時候確定)
基礎大小會同現在的大小進行比較。如果現在的大小比基礎大小大制定的百分比,重寫功能將啟動
同時需要指定一個最小大小用于AOF重寫,這個用于阻止即使文件很小但是增長幅度很大也去重寫AOF文件的情況
設置 percentage 為0就關閉這個特性auto-aof-rewrite-percentage
100auto-aof-rewrite-min-size
64mb
slowlog
slowlog-log-slower-than
Redis Slow Log 記錄超過特定執行時間的命令。執行時間不包括I/O計算比如連接客戶端,返回結果等,只是命令執行時間??梢酝ㄟ^兩個參數設置slow log:一個是告訴Redis執行超過多少時間被記錄的參數slowlog-log-slower-than(微秒),另一個是slow log 的長度。當一個新命令被記錄的時候最早的命令將被從隊列中移除 。注意制定一個負數將關閉慢日志,而設置為0將強制每個命令都會記錄。slowlog-max-len
對日志長度沒有限制,只是要注意它會消耗內存,可以通過 SLOWLOG RESET 回收被慢日志消耗的內存。
INCLUDES
include
指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使加粗樣式用同一份配置文件,而同時各個實例又擁有自己的特定配置文件,如:
include /path/to/local.conf
include /path/to/other.conf
vm相關
vm-enabled
指定是否啟用虛擬內存機制,默認值為no,簡單介紹一下,VM機制將數據分頁存放,由redis將訪問量較小的頁即冷數據 swap到磁盤上,訪問多的頁面由磁盤自動換出到內存中。vm-swap-file
虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個redis實例共享。vm-max-memory
將所有大于vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(redis的索引數據就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在于磁盤。默認值為 0。vm-page-size
redis swap文件分成了很多的page,一個對象可以保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是根據存儲的數據大小來設定的,作者建議如果儲存很多小對象,page大小最好設置為32或者64bytes;如果存儲很多大對象,則可以使用更大的page,如果不確定,就使用默認值。vm-pages
設置swap文件中page數量,由于頁表(一種表示頁面空閑或使用的bitmap)是放在內存中的,在磁盤上每8個pages將消耗1byte的內存:vm-max-threads
設置訪問swap文件的線程數,最好不要超過機器的核數,如果設置為0,那么所有對swap文件的操作都是串行的,可能會造成長時間的延遲。默認值為4。glueoutputbuf yes
設置在客戶端應答時,是否把較小的包含并為一個包發送,默認為開啟:
其他配置
當hash中包含超過指定元素個數并且最大的元素沒有超過臨界時,
hash將以一種特殊的編碼方式(大大減少內存使用)來存儲,這里可以設置這兩個臨界值
Redis Hash對應Value內部實際就是一個HashMap,實際這里會有2種不同實現,
這個Hash的成員比較少時Redis為了節省內存會采用類似一維數組的方式來緊湊存儲,而不會采用真正的HashMap結構,對應的value redisObject的encoding為zipmap,
當成員數量增大時會自動轉成真正的HashMap,此時encoding為ht。
hash-max-zipmap-entries 512
hash-max-zipmap-value 64
list數據類型多少節點以下會采用去指針的緊湊存儲格式。
list數據類型節點值大小小于多少字節會采用緊湊存儲格式。
list-max-ziplist-entries 512
list-max-ziplist-value 64
set數據類型內部數據如果全部是數值型,且包含多少節點以下會采用緊湊格式存儲。
set-max-intset-entries 512
zsort數據類型多少節點以下會采用去指針的緊湊存儲格式。
zsort數據類型節點值大小小于多少字節會采用緊湊存儲格式。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用
當你的使用場景中,有非常嚴格的實時性需要,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。
如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存
activerehashing yes
原文鏈接:https://blog.csdn.net/qq_35427589/article/details/126927659
相關推薦
- 2022-12-11 Docker中部署nginx服務的方案_docker
- 2022-04-18 taro 中設計稿尺寸相關問題,以及自適應頁面寫法
- 2022-03-21 C#中使用CliWrap讓命令行交互舉重若輕_C#教程
- 2023-03-03 Linux命令之mkdir,cat,touch,vi/vim的詳解_Linux
- 2023-03-17 使用c語言輕松實現動態內存管_C 語言
- 2022-09-25 FFmpeg源碼分析:圖像常用操作
- 2023-01-05 Kotlin?object的幾種用法示例詳解_Android
- 2022-09-13 一文詳解C語言中文件相關函數的使用_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支