redis配置参数说明
  IE5LYMWlmdvL 2023年11月02日 34 0

redis.conf配置文件说明

##########ADVANCED CONFIG##########
# 指定是否激活重置哈希,默认为开启
activerehashing yes 

# aof rewrite过程中,是否采取增量"文件同步"策略,默认为"yes",而且必须为yes.rewrite过程中,每32M数据进行一次文件同步,这样可以减少"aof大文件"写入对磁盘的操作次数.
aof-rewrite-incremental-fsync yes


# 普通client buffer限制,将 hard limit 和 soft limit 同时设置为 0,则表示关闭该限制
client-output-buffer-limit normal 0 0 0


#该配置表示,对于 Pub/Sub 客户端来说,若 output-buffer 占用内存达到 32M 或者超过 8M 的时间达到 60s,则关闭客户端连接
client-output-buffer-limit pubsub 32mb 8mb 60

# 该配置表示,对于 slave 客户端来说,如果 output-buffer 占用内存达到 256M 或者超过 64M 的时间达到 60s,则关闭客户端连接
client-output-buffer-limit slave 256mb 64mb 60

# 用来控制客户端传递给redis的数据大小,默认为1G【注意:在使用Redis时应尽量避免超大Key】
client-query-buffer-limit 1gb

# 往 Hash 集合中写入的元素个数超过了 hash-max-ziplist-entries (默认 512 个),或者写入的单个元素大小超过了 hash-max-ziplist-value (默认 64 字节),Redis 就会自动把 Hash 类型的实现结构由压缩列表转为哈希表。在节省内存方面,哈希表就没有压缩列表那么高效了
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# 稀疏表示字节限制
hll-sparse-max-bytes 3000

# Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500.(参见redis.h源码)此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁,此值过大意味着"内存敏感"性较差.建议保持默认值
hz 10

# 是一个以分钟为单位的数值,可以调整counter的减少速度
lfu-decay-time 1

# 可以调整计数器counter的增长速度,lfu-log-factor越大,counter增长的越慢
lfu-log-factor 10

# 0: 是个特殊值,表示都不压缩。这是Redis的默认值
list-compress-depth 0

# 每个quicklist节点上的ziplist大小不能超过8 Kb。(-2是Redis给出的默认值)
list-max-ziplist-size -2

# 批量请求(单个字符串的元素)内存大小限制,默认是 proto-max-bulk-len 512mb,你可以修改限制,但必须大于等于 1mb。
proto-max-bulk-len 512mb

# 当集合的元素都是 64 位以内的十进制整数时且长度不超过 set-max-intset-entries 配置的值(默认 512),Sets 的底层会使用 intset 存储节省内存。添加的元素大于 set-max-intset-entries配置的值,底层实现由 intset 转成散列表存储。
set-max-intset-entries 512

# 7.0 版本之前,当集合元素个数小于 zset-max-ziplist-entries配置,同时且每个元素的值大小都小于zset-max-ziplist-value配置(默认 64 字节,推荐调大到 128)时,我将使用 ziplist 数据结构存储数据,有效减少内存使用。与此类似,7.0 版本之后我将使用 listpack 存储
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

##########NETWORK##########
bind 0.0.0.0
port 5557
# 默认开启保护模式,如果没有设置密码或者没有 bind 配置,我只允许在本机连接我,其它机器无法连接。
protected-mode yes

# 用于在 Linux 系统中控制 TCP 三次握手已完成连接队列(完成三次握手后)的长度,如果已完成连接队列已经满则无法放入,客户端会报read timeout或者connection reset by peer的错
# 默认配置是 511,这个配置的值不能大于 Linux 系统定义的 /proc/sys/net/core/somaxconn 值,Linux 默认的是 128。
# 建议修改为 2048 或者更大,Linux 则在 /etc/sysctl.conf中添加net.core.somaxconn = 2048配置,并且在终端执行 sysctl -p即可。
tcp-backlog 511

# 单位是秒,官方建议值是 300。这是一个很有用的配置,实现 TCP 连接复用。    
tcp-keepalive 300

# 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 0
unixsocket redis.sock
unixsocketperm 700

##########SLOW LOG##########
# 指定执行时间超过多少微秒(1秒等于1000 000微秒)的命令请求会被记录到日志上
slowlog-log-slower-than 10000

# 指定服务器最多保存多少条慢查询日志。
slowlog-max-len 128


##########MEMORY MANAGEMENT##########
# redis实例分配的最大内存,如果一个物理节点部署一个redis实例,maxmemory应设置为物理内存的2/3,预留一定系统内存空间
maxmemory 4G

# 默认noeviction,不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。volatile-lru(least recently used):最近最少使用算法,从设置了过期时间的键key中选择空转时间最长的键值对清除掉
maxmemory-policy volatile-lru

# Redis的LRU算法的时候,Redis每次会随机选择N个key放入淘汰池中,这个 N的就是通过maxmemory-samples选项来配置的.
maxmemory-samples 5


##########GENERAL##########
always-show-logo yes
# 默认情况下redis不是作为守护进程运行的,如果想后台运行,应改为yes,  在守护进程运行时,会生成将进程id写入一个pid文件中
daemonize yes
databases 16
logfile /zcloud/redis/5557/logs/redis.log
loglevel notice
pidfile /zcloud/redis/5557/run/redis.pid
supervised no

##########LUA SCRIPTING##########
# 为了防止某个脚本执行时间过长导致Redis无法提供服务(比如陷入死循环),Redis提供了lua-time-limit参数限制脚本的最长运行时间,默认为5秒钟。当脚本运行时间超过这一限制后,Redis将开始接受其他命令但不会执行(以确保脚本的原子性,因为此时脚本并没有被终止),而是会返回“BUSY”错误。
lua-time-limit 5000

##########REPLICATION##########
# requirepass是配置在主节点的,masterauth是配置在从节点的,两边配置要一样从节点才能和主节点连接上进行主从复制
masterauth *****

# 默认配置为10s,这个配置表示slave和master之间只能落后N S的数据。超过了该值就拒绝写请求,就不会往master中写入数据。
min-slaves-max-lag 10

# 默认配置为0,则主节点始终接收写入请求(即使无副本可用).这个配置表示master至少有N个slave节点才进行工作。当出现Redis集群脑裂时,其中一个出问题的master此时就少于N的slave连接,此master就拒绝写请求。
min-slaves-to-write 0

# 环形缓冲区,整个master进程中只会存在一个,所有的slave公用。backlog的大小通过repl-backlog-size参数设置,默认大小是1M。
# (复制积压缓冲区,默认为1mb,对于复制积压缓冲区整个主节点只有一个,所有从节点共享此缓冲区,优化值100Mb) 
repl-backlog-size 100mb

# 环形缓冲复制队列存活时长(所有slaves不可用时,保留repl_backlog多长时间,单位:秒)
repl-backlog-ttl 3600

# 假如设置成yes,则redis会合并小的TCP包从而节省带宽,但会增加同步延迟(40ms),造成master与slave数据不一致。 
# 假如设置成no,则redis master会立即发送同步数据,没有延迟。 
# 前者关注性能,后者关注一致性
repl-disable-tcp-nodelay no

# 复制同步策略:磁盘(disk)或套接字(socket),默认为 no 使用 disk .硬盘性能差,网络性能好的情况下 diskless 效果更佳(警告:无盘复制目前处于试验阶段)
# 1、Disk-backed:Redis master 节点创建一个新的进程并将 RDB 文件写入磁盘,然后文件通过父进程增量传输给 replicas 节点;
# 2、Diskless:Redis master 节点创建一个新的进程并直接将 RDB 文件写入到 replicas 的 sockets 中,不写到磁盘。
repl-diskless-sync no

# 当进行 diskless 复制时,master 节点会等待一段时间(下边的repl-diskless-sync-delay 配置)再传输以期望会有多个 replicas 连接进来
repl-diskless-sync-delay 5

# master 向 slave 发送 PING 心跳的间隔,默认 10s 发送一次
repl-ping-slave-period 10

# slave和master之间的复制超时时间,默认为60s;对于内存数据集比较大的系统,可以增大repl-timeout参数
repl-timeout 60

# 哨兵领导者负责选择一个slave节点提升为新 master 节点, 选择逻辑为:
#    过滤掉不健康的 slave 节点
#    选择 slave-priority 配置值最小的从节点。若有多个从节点 slave-priority 最小且相同则进入下一步
#    选择复制偏移量最大的从节点,这意味着这个从节点上面的数据最完整。若仍有多个 slave 节点偏移量相同则进入下一步
#    选择 runid 最小的从节点
slave-priority 100

##########REDIS CLUSTER##########
# 虽然此配置的名字叫"集群配置文件",但是此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新
cluster-config-file /zcloud/redis/5557/conf/nodes-5557.conf

# 如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例
cluster-enabled yes

# 主节点需要的最小从节点数,只有达到这个数,主节点失败时,它从节点才会进行迁移。更详细介绍可以看本教程后面关于副本迁移到部分。
cluster-migration-barrier 1

# 这是集群中的节点能够失联的最大时间,超过这个时间,该节点就会被认为故障。如果主节点超过这个时间还是不可达,则用它的从节点将启动故障迁移,升级成主节点。注意,任何一个节点在这个时间之内如果还是没有连上大部分的主节点,则此节点将停止接收任何请求。一般设置为15秒即可。
cluster-node-timeout 15000

# 在部分key所在的节点不可用时,如果此参数设置为"yes"(默认值), 则整个集群停止接受操作;如果此参数设置为”no”,则集群依然为可达节点上的key提供读操作
cluster-require-full-coverage no

# 不支持slave failover,默认NO,支持failover
cluster-slave-no-failover no

# 从节点有效性判断因子,当从节点与主节点最后通信时间超过(cluster-node-timeout*slave-validity-factor)+repl-ping-slave-period时,对应从节点不具备故障转移资格,防止断线时间过长的从节点进行故障转移。设置为0标识从节点永不过期
cluster-slave-validity-factor 10

##########APPEND ONLY MODE##########
# 当Redis启动时,发现AOF文件出现末尾截断,这时是继续加载文件还是报错退出
#    yes :末尾被截断的 AOF 文件将会被加载,并打印日志通知用户;
#    no :服务器将报错并拒绝启动;(可以通过使用redis-check-aof 工具修复AOF文件,然后再重新启动)    
aof-load-truncated yes

# 默认yes,混合持久化就是同时结合RDB持久化以及AOF持久化混合写入AOF文件。这样做的好处是可以结合 rdb 和 aof 的优点, 快速加载同时避免丢失过多的数据,缺点是 aof 里面的 rdb 部分就是压缩格式不再是 aof 格式,可读性差。
aof-use-rdb-preamble yes
appendfilename "appendonly.aof"
appendfsync everysec

# 只增文件的文件名称(默认是appendonly.aof),no 关闭aof持久化
appendonly yes

#设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写。
auto-aof-rewrite-min-size 64mb

# 默认值为100。aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。
# 当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
auto-aof-rewrite-percentage 100

# bgrewriteaof操作和主进程写aof文件的操作,两者都会操作磁盘,而bgrewriteaof往往会涉及大量磁盘操作,这样就会造成主进程在写aof文件的时候出现阻塞的情形,现在no-appendfsync-on-rewrite参数出场了。
# 如果该参数设置为no,是最安全的方式,不会丢失数据,但是要忍受阻塞的问题。如果设置为yes呢?这就相当于将appendfsync设置为no,这说明并没有执行磁盘操作,只是写入了缓冲区,
# 因此这样并不会造成阻塞(因为没有竞争磁盘),但是如果这个时候redis挂掉,就会丢失数据。丢失多少数据呢?在linux的操作系统的默认设置下,最多会丢失30s的数据。
# 因此,如果应用系统无法忍受延迟,而可以容忍少量的数据丢失,则设置为yes。如果应用系统无法忍受数据丢失,则设置为no。
no-appendfsync-on-rewrite no

##########LAZY FREEING##########
# 针对redis内存使用达到maxmeory,并设置有淘汰策略时;在被动淘汰键时,是否采用lazy free机制;因为此场景开启lazy free, 可能使用淘汰键的内存释放不及时,
# 导致redis内存超用,超过maxmemory的限制。此场景使用时,请结合业务测试。
lazyfree-lazy-eviction no

# 针对设置有TTL的键,达到过期后,被redis清理删除时是否采用lazy free机制;此场景建议开启,因TTL本身是自适应调整的速度。
lazyfree-lazy-expire no

# 有些指令在处理已存在的键时,会带有一个隐式的 del 键的操作,比如 rename 命令,当目标键已存在,Redis 会先删除目标键,如果这些目标键是一个 big key,就会造成阻塞删除的问题,
# 此配置表示在这种场景中是否开启 lazy free 机制删除;
lazyfree-lazy-server-del no

# Redis是一种高性能的内存数据库,其支持主从同步(master-slave replication)功能,其中slave节点可以复制master节点上的数据。在Redis的主从同步中,有一个重要的参数是slave-lazy-flush,它表示从节点是否应该延迟刷新磁盘上的数据,以避免对磁盘的过度写入。
# 当slave-lazy-flush设置为yes时,Redis从节点会将复制过来的数据先存储在内存中,而不是立即将数据写入磁盘。这样做可以减少从节点上的磁盘写入操作,从而提高性能。但是,如果从节点崩溃,由于数据没有被写入磁盘,可能会导致数据的丢失。
# 当slave-lazy-flush设置为no时,Redis从节点会立即将复制过来的数据写入磁盘。这样做可以保证数据的可靠性,但是会增加磁盘的写入操作,从而可能影响性能。
# 因此,需要根据实际情况来选择是否开启slave-lazy-flush参数。如果从节点的数据可靠性比性能更重要,那么可以将slave-lazy-flush设置为no;如果性能比数据可靠性更重要,那么可以将slave-lazy-flush设置为yes。
slave-lazy-flush no

##########SNAPSHOTTING##########
dbfilename dump.rdb
dir /zcloud/redis/5557/data
rdbchecksum yes
rdbcompression yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes

##########SECURITY##########
rename-command CONFIG "CONFIG"
# requirepass是配置在主节点的,masterauth是配置在从节点的,两边配置要一样从节点才能和主节点连接上进行主从复制
requirepass *****

##########LATENCY MONITOR##########
# 设置延迟阀值(单位:毫秒),只有超过阀值的事件才会被记录成为延迟峰值,默认0关闭
latency-monitor-threshold 0

##########EVENT NOTIFICATION##########
# "" 为默认配置,需注释,否则键空间通知无法生效
notify-keyspace-events ""
##########CLIENTS##########
maxclients 10000
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月31日   33   0   0 Dockerredis
  xaeiTka4h8LY   2024年05月31日   48   0   0 nosqlredis
  xaeiTka4h8LY   2024年04月26日   55   0   0 yumredis
  xaeiTka4h8LY   2024年04月26日   51   0   0 centoslinuxredis
IE5LYMWlmdvL