redis-配置詳解(基礎篇)


# 可以配置包含其他redis配置,可以使得配置更清晰化
# include /path/to/local.conf

################################## MODULES #####################################

# Load modules at startup. If the server is not able to load modules
# it will abort. It is possible to use multiple loadmodule directives.
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so
################################## NETWORK #####################################

# 開啟綁定ip,如果配置了,只能這個ip才能訪問,建議不配置
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1(加::1表示綁定本機的ipv6 localhost)
# 接受所有來自于可用網絡接口的連接
bind 0.0.0.0

# 是否可以遠程連接,建議關閉
protected-mode no

# 設置端口
port 3036

# 設置參數是確定TCP連接中完成的長度(這個值不能大于linux內核/proc/sys/net/core/somaxconn值,
當系統并發量大并且客戶端緩慢的時候,可以參考的設置這個值,系統一般默認是128,可以更改這個值)
tcp-backlog 511

# 設置客戶端空閑超時timeout,服務端會自動斷開連接;設置0,表示服務端不會主動去斷開
timeout 0

tcp-keepalive 300

################################# GENERAL #####################################

# 是否使用守護線程在后臺執行,yes,在后臺執行 no:不在后臺執行 此時redis將一直運行,除非手動kill該進程
daemonize yes

# 是否開啟守護線程,開啟守護線程,使用一下三種模式
# ? supervised no ? ? ?不監督
# ? supervised upstart 使用upstart
# ? supervised systemd 使用systemd
# ? supervised auto ? ?
# ? 沒理解 ? ? ? ?
supervised no

# 設置redis,進程文件 當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定
pidfile /var/run/redis_6379.pid

# 錯誤輸出級別
loglevel error
# 日志輸出目錄
logfile "/xx/redis.log"
# 是否開啟系統日志
# syslog-enabled no
# 日志前綴標語
# syslog-ident redis
# syslog-facility local0

# 數據庫數量
databases 16

# 是否開啟ascii的redis-logo
always-show-logo yes

################################ rdb快照配置 ?################################

# rdb 快照頻率
# 900秒內 有1個指令,快照一次
# 300秒內 有10個指令,快照一次
# 60秒內 ?有10000個指令,快照一次
save 900 1
save 300 10
save 60 10000

# 如果rdb持久出現錯了。是否可以繼續使用,yes是打開不能操作。no關閉,持久化異常后也能繼續操作
stop-writes-on-bgsave-error yes

# 配置存儲到本地是否需要使用lzf壓縮;壓縮會占用cpu超過,關閉的話,文件會過大。所以建議打開。
rdbcompression yes

# 是否校驗rdb文件;從rdb格式的第五個版本開始,在rdb文件的末尾會帶上CRC64的校驗和。這跟有利于文件的
容錯性,但是在保存rdb文件的時候,會有大概10%的性能損耗,所以如果你追求高性能,可以關閉該配置
rdbchecksum yes

# 指定本地數據庫文件名
dbfilename dump.rdb

# 保存文件目錄地址 rdb和aof都會寫入到裝個目錄下
dir ./

################################# 主從復制 #################################

# 主庫的ip及端口 5.0以上使用replica的指令
# slaveof <masterip> <masterport>

# 主庫,如果設置密碼,需要加主庫的密碼
# masterauth <master-password>

# 當從節點與主節點連接失敗了。這是yes,則表示從節點繼續應答客戶端;設置no,所有連接到這臺從節點的客戶端,會提示正在與主節點進行同步
slave-serve-stale-data yes

# 從節點只讀。
slave-read-only yes

# 新的從節點或者從節點與主節點長期沒有增量同步,需要全量同步
# 使用磁盤模式,會在從節點上新建redis快照的文件(根據配置)
# 使用socket方式,同步數據到從節點,不落地磁盤上,效率更高, 主節點可并行傳輸到多個從節點上。
repl-diskless-sync no

# 從節點,配置x秒,向主節點ping一次。
# repl-ping-slave-period 10

# 同時時間設置
# repl-timeout 60

# 使用更少的寬帶同步,但是會導致從節點數據延遲,建議不設置
repl-disable-tcp-nodelay no

# 當從節點與主節點斷開后,主節點同步的數據會緩存到緩沖區;開啟這個配置,設置大小
# 如果不開啟配置,則不緩存
# repl-backlog-size 1mb

# 當從節點一直沒起來,設置這個數據為了是否緩沖區,如果配置0,則永久不釋放。
# repl-backlog-ttl 3600

# 選舉權重,越小權重越大,設置0,不參與
slave-priority 100

# 副本同步會存在延遲,至少3個寫操作,時間延遲小于等于10秒的副本,主節點就停止寫入操作。這兩個參數只要一個設置為0,就禁用該功能
# min-slaves-to-write 3
# min-slaves-max-lag 10
#
# redis服務沒有跟哨兵在同一個網絡,比如:在容器里面跑,info replication查看到IP和端口,哨兵就有可能訪問不到,這時候就需要,指定對外的IP和端口,提供給哨兵檢測。
# slave-announce-ip 5.5.5.5
# slave-announce-port 1234

################################## 密碼/保密設置 ###################################
# 密碼設置
requirepass fe.123456

# 因為這些指令比較的危險,不能再生產執行,所以可以改寫指令改成其他的。
# 比如:rename-command 原指令 ?改寫后的指令
# 在配置文件中添加 ,使用"" 表示禁用
#rename-command KEYS ""
#rename-command SHUTDOWN ""
#rename-command CONFIG ""
#rename-command FLUSHALL ""
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

################################### CLIENTS ####################################

# 所有連接server連接,超過10000,就會報連接數量不足,拒絕連接。
# maxclients 10000

############################## redis內存管理(內存淘汰策略和算法) ################################

# 設置內存使用大小,默認不設置,就是系統內存大小,不建議不設置
# 因為操作redis,有些操作是不計算到redis內存的。默認不設置,超過內存就報錯
# maxmemory <bytes>

# 內存清除策略, 超過內存,會不接受更新指令,但是可以操作get指令
# maxmemory-policy noeviction

# LRU、LFU和最小TTL算法不是精確算法,而是近似算法
算法(為了節省內存),因此您可以根據速度或精確默認情況下,Redis將檢查五個鍵并選擇最近使用較少,可以使用以下命令更改樣本大小
配置指令。默認值為5會產生足夠好的結果。10非常接近真正的LRU,但成本更高的CPU。3更快,但不是很準確。
# maxmemory-samples 5

############################# LAZY FREEING ####################################
# lazy free可以認為是惰性刪除或延遲釋放,針對bigkey也有很好的釋放策略,有效的針對bigkey帶來的性能問題
# lazyfree-lazy-eviction 針對redis的超過了maxmeory,并設置了meory-prolicy情況下,在淘汰,釋放使用lazy-free
lazyfree-lazy-eviction no
# lazyfree-lazy-expire 針對redis設置ttl淘汰策略,達到過期后,是否使用lazy-free
lazyfree-lazy-expire no
# lazyfree-lazy-server-del 是針對已經存在的key,會存在隱式的帶來del操作,比如rename操作,就是先del操作。如果有bigkey,就可能會帶來阻塞的情況
lazyfree-lazy-server-del no
# slave-lazy-flush 針對slave進行全量數據同步,slave在加載master的RDB文件前,會運行flushall來清理自己的數據場景, 參數設置決定是否采用異常flush機制
slave-lazy-flush no

############################## aof的配置 ###############################

# 是否開啟aof
appendonly yes

# The name of the append only file (default: "appendonly.aof")
# aof文件名
appendfilename "appendonly.aof"

# redis aof刷盤策略?
# 設置no,則由操作系統來保證數據刷盤
# 設置always,這里有xa的操作。先執行更新到redis緩存,在執行刷盤操作,特別是有主從
# 設置everysec,先保存到緩沖區,一每秒的時間刷盤,如果能接受一秒丟失,建議使用這個。如果是磁盤io過多,其實設置這個也是弊端很大
appendfsync always
# appendfsync everysec
# appendfsync no

# aof設置內存淘汰策略是always/everysec,在刷盤的時候,有大量的磁盤io,導致刷盤的時候,阻塞時間過長,
#如果這里開啟,表示在aof重寫的時候會把需要刷盤的數據暫存到緩沖區里面;等磁盤io降下來后,在進行刷盤,設置開啟,也會有弊端,如果redis宕機了,就會丟失數據。
# aof設置none,會根據linux上刷盤時間默認 30秒,刷新到緩沖區。
no-appendfsync-on-rewrite no

# aof重寫配置,當目前的aof文件大小超過上一次的aof重寫的百分比,就進行重寫;即當aof文件增長到一定的大小
# 就會調用bgrewriteof進行重寫aof文件
auto-aof-rewrite-percentage 100
# 設置重寫的最小標準大小,防止重寫的時候文件過小,進行重寫。
auto-aof-rewrite-min-size 64mb

# aof文件末尾可能會被截斷,如果這里不設置yes,被截斷,在重啟的時候,重新加載aof文件,就會加載失敗,拒絕重啟
# 設置yes,會觸發用戶事件,通知到用戶,告知錯誤。并且可以進行重啟redis
aof-load-truncated yes

# 加載aof文件,識別aof以redis前綴的開頭,字符串并加載帶有前綴rdb的文件,作為aof文件的尾巴。進行加載
aof-use-rdb-preamble no

################################ lua 腳本 ?###############################

# lua腳本執行最大的時間
# lua腳本的好處①高效,在服務器上執行,節省了網絡傳輸開銷等,特別lua腳本,執行多個腳本,好處就體現出來了。
# lua腳本的好處②原子性;一個業務需要多個指令完成,lua腳本比較好的選擇
# lua腳本的壞處:那就是如果你lua過于復雜,假如在里面取bigkey操作了,就會阻塞;執行時間過長;
lua-time-limit 5000

################################ redis cluster 集群 ###############################
#
# 是否開啟集群
# cluster-enabled yes

# 集群配置文件名,這個文件不需要人為配置,集群會自動更新這個配置
# cluster-config-file nodes-6379.conf

# 節點連接超時時間(毫秒)
# cluster-node-timeout 15000

# 在master宕機后,所有slave節點都會申請成為master;當由于redis節點與master連接過久,數據過于陳舊了。可能不適合做為master
# ?通過過下公式可以來判斷是否不適合
# ? (node-timeout * slave-validity-factor) + repl-ping-slave-period
# ?假設15秒超時 * 這個默認配置10 + 從節點配置ping一次時間
# 15 * 10 + 10 ?= 160
# cluster-slave-validity-factor 10

# master的slave節點大于這個配置,則嘗試把這個節點遷移到其他的master上。
# cluster-migration-barrier 1

# 默認情況下,集群全部的slot有節點負責,集群狀態才為ok,才能提供服務。設置為no,可以在slot沒有全
部分配的時候提供服務。不建議打開該配置,這樣會造成分區的時候,小分區的master一直在接受寫請求,而
造成很長時間數據不一致
# cluster-slave-no-failover no

########################## CLUSTER DOCKER/NAT support ?########################

# In certain deployments, Redis Cluster nodes address discovery fails, because
# addresses are NAT-ted or because ports are forwarded (the typical case is
# Docker and other containers).
#
# In order to make Redis Cluster working in such environments, a static
# configuration where each node knows its public address is needed. The
# following two options are used for this scope, and are:
#
# * cluster-announce-ip
# * cluster-announce-port
# * cluster-announce-bus-port
#
# Each instruct the node about its address, client port, and cluster message
# bus port. The information is then published in the header of the bus packets
# so that other nodes will be able to correctly map the address of the node
# publishing the information.
#
# If the above options are not used, the normal Redis Cluster auto-detection
# will be used instead.
#
# Note that when remapped, the bus port may not be at the fixed offset of
# clients port + 10000, so you can specify any port and bus-port depending
# on how they get remapped. If the bus-port is not set, a fixed offset of
# 10000 will be used as usually.
#
# Example:
#
# cluster-announce-ip 10.1.1.5
# cluster-announce-port 6379
# cluster-announce-bus-port 6380

################################## SLOW LOG ###################################

# 記錄執行慢的指令,建議開啟,這里單位是微妙
# 1000000 這里就是1秒;10000 = 100毫秒 = 0.1秒
# 設置0,強制記錄所有,設置 < 0 則不記錄慢日志
slowlog-log-slower-than 10000

# 慢查詢日志長度。當一個新的命令被寫進日志的時候,最老的那個記錄會被刪掉。這個長度沒有限制。只要有足
夠的內存就行。你可以通過 SLOWLOG RESET 來釋放內存
# Redis使用了一個列表來存儲慢查詢日志。Redis 使用了一個List 實現了一個先進先出的隊列
slowlog-max-len 128

# 可通過slowlog get 數量 slowlog len | slowlog reset

################################ LATENCY MONITOR ##############################

# 延遲監控,設置為0,關閉延遲監控
latency-monitor-threshold 0

############################# 事件通知 ##############################
#
# PUBLISH __keyspace@0__:foo del
# PUBLISH __keyevent@0__:del foo
#
# key事件通知:分為鍵空間 & 鍵事件通知
# __keyspace#第幾個庫_: keyPattern 操作類型del,set?
# 這里設置key
notify-keyspace-events ""

############################### ADVANCED CONFIG ###############################

# hash命令,個數及長度大于閾值就進行壓縮,這里內部是為了節省空間
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

#?
list-max-ziplist-size -2

# list指令,是否可以進行壓縮 0:表示禁止列表壓縮 1:表示內部節點壓縮
# 頭部 -> 節點 -> 節點 ...> 尾部;內部節點進行壓縮
list-compress-depth 0

set-max-intset-entries 512

# zset指令,個數及長度大于閾值就進行壓縮,這里內部是為了節省空間
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

# HyperLogLog 指令設置
activerehashing yes

# 客戶端輸出緩沖區閾值設置,達到這些上限,客戶端會斷開連接
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
?
# client-query-buffer-limit 1gb

# proto-max-bulk-len 512mb

hz 10

aof-rewrite-incremental-fsync yes

# lfu-log-factor 10
# lfu-decay-time 1

########################### ACTIVE DEFRAGMENTATION #######################
# 為什么會有redis內存碎片?
# Redis存儲存儲數據的時候向操作系統申請的內存空間可能會大于數據實際需要的存儲空間或者頻繁的進行修改 就會導致內存碎片
# redis 內存碎片整理,默認是關閉,打開就開啟內存碎片整理;要么就直接重啟
# 要么設置這個地方
# activedefrag yes

# 內存碎片大于100m的時候就進行清理
# 內存碎片:used_memory_rss - used_memory
# active-defrag-ignore-bytes 100mb

# 內存碎片率計算:used_memory_rss(從操作角度來看,給redis分配的空間)/used_memory (redis使用的內容) ; 如果這里超過1.5,內存碎片就比較嚴重?
# active-defrag-threshold-lower 10

# Maximum percentage of fragmentation at which we use maximum effort
# active-defrag-threshold-upper 100

# 內存碎片清理占用cpu比例不讀與25
# active-defrag-cycle-min 25

# 內存碎片清理占用cpu比例不讀與75
# active-defrag-cycle-max 75

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40396.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

拉丁方設計資料的方差分析(SPSS版+SAS版)

拉丁方設計&#xff08;Latin square design&#xff09;&#xff1a;實驗研究中涉及一個處理因素和兩個控制因素&#xff0c;每個因素的類別數或水平數相等&#xff0c;此時可采用拉丁方設計&#xff0c;將兩個控制因素分別安排在拉丁方設計的行和列上。該設計類型仍為單因素方…

中電金信通過KCSP認證 云原生能力獲權威認可

中電金信通過KCSP&#xff08;Kubernetes Certified Service Provider&#xff09;認證&#xff0c;正式成為CNCF&#xff08;云原生計算基金會&#xff09;官方認證的 Kubernetes 服務提供商。 Kubernetes是容器管理編排引擎&#xff0c;底層實現為容器技術&#xff0c;是云原…

ABAP 新語法--Data Processing

1. String Template 新語法引入了字符串模板&#xff0c;用于處理字符串連接以及格式轉換 字符串模板在 | … | 之間定義&#xff0c;主要分為兩部分&#xff0c;固定文本和變量 其中&#xff0c;變量只能在 { … } 內使用&#xff0c;大括號之外的所有字符均作為固定文本使用…

【Swagger】只需要三步,就可以讓你的項目實現Swagger在線文檔,實時瀏覽,修改展示

目錄 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 項目啟動中加入Swagger注解的開關&#xff0c;啟動Swagger功能 4. 啟動項目&#xff0c;查看效果 Swagger 的功能這里就不多說明了&#xff0c;相信大家都懂的&#xff0c;好奇多問一句&#xff0c;大家有知道其…

zookeeper安裝配置采坑流程

安裝 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz解壓&#xff1a; tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz如下 bin目錄下文件是可執行文件 conf目錄文件是配置文件 修改zoo.cfg&#xff08;復制zoo_sample&#x…

從0搭建ECG深度學習網絡

本篇博客介紹使用Python語言的深度學習網絡&#xff0c;從零搭建一個ECG深度學習網絡。 任務 本次入門的任務是&#xff0c;篩選出MIT-BIH數據集中注釋為[‘N’, ‘A’, ‘V’, ‘L’, ‘R’]的數據作為本次數據集&#xff0c;然后按照8&#xff1a;2的比例劃分為訓練集&…

什么是DNS服務器的層次化和分布式?

DNS (Domain Name System) 的結構是層次化的&#xff0c;意味著它是由多個級別的服務器組成&#xff0c;每個級別負責不同的部分。以下是 DNS 結構的層次&#xff1a; 根域服務器&#xff08;Root Servers&#xff09;&#xff1a; 這是 DNS 層次結構的最高級別。全球有13組根域…

【云原生】Docker 詳解(二):Docker 架構及工作原理

Docker 詳解&#xff08;二&#xff09;&#xff1a;Docker 架構及工作原理 Docker 在運行時分為 Docker 引擎&#xff08;服務端守護進程&#xff09; 和 客戶端工具&#xff0c;我們日常使用各種 docker 命令&#xff0c;其實就是在使用 客戶端工具 與 Docker 引擎 進行交互。…

[oneAPI] 手寫數字識別-LSTM

[oneAPI] 手寫數字識別-LSTM 手寫數字識別參數與包加載數據模型訓練過程結果 oneAPI 比賽&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolk…

Curson 編輯器

Curson 漢化與vacode一樣 Curson 自帶chat功能 1、快捷鍵ctrlk(代碼中編輯) 2、快捷鍵ctrll 右側打開窗口

為什么hive會出現_HIVE_DEFAULT_PARTITION分區

問題&#xff1a; 為什么hive表中出現_HIVE_DEFAULT_PARTITION分區&#xff1f; 解答&#xff1a; 因為在業務sql中使用的是動態分區&#xff0c;并且hive啟用動態分區時&#xff0c;對于指定的分區鍵如果存在空值時&#xff0c;會對空值部分創建一個默認分區用于存儲該部分…

小程序項目組件的基本應用

宿主環境&#xff1a;程序運行必須依賴的環境 小程序的宿主環境 ---->手機微信(定位、掃碼、支付等) 小程序的通信模型&#xff1a; 渲染層和邏輯層之間的通信(微信客戶端轉發)邏輯層和第三方服務器之間的通信(微信客戶端轉發) 小程序的運行機制&#xff1a; 啟動&#xff1…

c#實現工廠模式

可以使用以下代碼實現C#中的工廠模式&#xff1a; 首先&#xff0c;定義一個接口作為產品的抽象&#xff1a; public interface IProduct {void Operation(); }然后&#xff0c;創建具體的產品類&#xff1a; public class ConcreteProductA : IProduct {public void Operat…

vue基礎知識五:請描述下你對vue生命周期的理解?在created和mounted這兩個生命周期中請求數據有什么區別呢?

一、生命周期是什么 生命周期&#xff08;Life Cycle&#xff09;的概念應用很廣泛&#xff0c;特別是在政治、經濟、環境、技術、社會等諸多領域經常出現&#xff0c;其基本涵義可以通俗地理解為“從搖籃到墳墓”&#xff08;Cradle-to-Grave&#xff09;的整個過程在Vue中實…

41 | 京東商家書籍評論數據分析

京東作為中國領先的電子商務平臺,積累了大量商品評論數據,這些數據蘊含了豐富的信息。通過文本數據分析,我們可以了解用戶對產品的態度、評價的關鍵詞、消費者的需求等,從而有助于商家優化產品和服務,以及消費者作出更明智的購買決策。 本文將詳細闡述如何獲取京東商家評…

Python opennsfw/opennsfw2 圖片/視頻 鑒黃 筆記

nsfw&#xff08; Not Suitable for Work&#xff09;直接翻譯就是 工作的時候不適合看&#xff0c;真文雅 nsfw效果&#xff0c;注意底部的分數 大體流程&#xff0c;輸入圖片/視頻&#xff0c;輸出0-1之間的數字&#xff0c;一般情況下&#xff0c;Scores < 0.2 認為是非…

7zip分卷壓縮

前言 有些項目上傳文件大小有限制 壓縮包大了之后傳輸也會比較慢 解決方案 我們可以利用7zip壓縮工具對文件進行分卷壓縮 利用7zip壓縮工具進行分卷壓縮 查看待壓縮文件大小 壓縮完成之后有300多M&#xff0c;我們用100M去進行分卷壓縮 選擇待壓縮的文件夾&#xff0c;右…

網絡安全 Day30-運維安全項目-容器架構上

容器架構上 1. 什么是容器2. 容器 vs 虛擬機(化) :star::star:3. Docker極速上手指南1&#xff09;使用rpm包安裝docker2) docker下載鏡像加速的配置3) 載入鏡像大禮包&#xff08;老師資料包中有&#xff09; 4. Docker使用案例1&#xff09; 案例01&#xff1a;:star::star::…

《內網穿透》無需公網IP,公網SSH遠程訪問家中的樹莓派

文章目錄 前言 如何通過 SSH 連接到樹莓派步驟1. 在 Raspberry Pi 上啟用 SSH步驟2. 查找樹莓派的 IP 地址步驟3. SSH 到你的樹莓派步驟 4. 在任何地點訪問家中的樹莓派4.1 安裝 Cpolar內網穿透4.2 cpolar進行token認證4.3 配置cpolar服務開機自啟動4.4 查看映射到公網的隧道地…

【JavaEE基礎學習打卡02】是時候了解Java EE了!

目錄 前言一、為什么要學習Java EE二、Java EE規范介紹1.什么是規范&#xff1f;2.什么是Java EE規范&#xff1f;3.Java EE版本 三、Java EE應用程序模型1.模型前置說明2.模型具體說明 總結 前言 &#x1f4dc; 本系列教程適用于 Java Web 初學者、愛好者&#xff0c;小白白。…