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.mzph.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;小白白。…