redis-6.2.4-redis.conf单机默认配置文件详解

# cat /usr/local/redis/redis.conf|grep ^[^#]
#bind指定 Redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项(bind 127.0.0.1为接收本机的请求)
bind 127.0.0.1

#protected-mode是指保护模式,默认情况下是yes,表示不允许通过外界网络连接使用redis;如果需要通过网络访问redis,将该项改为no。
protected-mode yes

#port监听端口,默认为 6379
port 6379

# TCP 监听的最大容纳数量,高并发环境下,调整数值可以避免客户端连接缓慢的问题
tcp-backlog 511
#timeout设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接。
timeout 0

# 单位:秒,表示周期性使用 SO_KEEPALIVE 检测客户端是否处于健康状态,毕淼服务器阻塞,默认 300s,设置 0 则不会周期性检测
tcp-keepalive 300

#daemonize默认情况下,redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes。
daemonize yes

# 可以通过upstart和systemd管理Redis守护进程
# 选项:
#    supervised no - 没有监督互动
#    supervised upstart - 通过将Redis置于SIGSTOP模式来启动信号
#    supervised systemd - signal systemd将READY = 1写入$ NOTIFY_SOCKET
#    supervised auto - 检测upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET环境变量
supervised no

#pidfile当 Redis 在后台运行的时候, Redis 默认会把 pid 文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个 redis 服务时,需要指定不同的 pid 文件和端口。
pidfile /var/run/redis_6379.pid

# 定义日志级别 { debug| verbose| notice | warning}
    # debug(记录大量日志信息,适用于开发、测试阶段)
    # verbose(较多日志信息)
    # notice(适量日志信息,使用于生产环境)
    # warning(仅有部分重要、关键信息才会被记录)
loglevel notice

#logfile配置 log 文件地址,默认使用标准输出,即打印在命令行终端的窗口上。
logfile "/data/app_log/redis_logs/redis.log"

#databases设置数据库的个数,可以使用 SELECT 命令来切换数据库。默认使用的数据库是 0
databases 16

always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"

#save设置 Redis 进行数据库镜像的频率。if(在 60 秒之内有 10000 个 keys 发生变化时){进行镜像备份}
#else if(在 300 秒之内有 10 个 keys 发生了变化){进行镜像备份}else if(在 900 秒之内有 1 个 keys 发生了变化){进行镜像备份}
save 900 1 # 900 秒内,如果至少有 1 个 key 值变化 -- 则保存
save 300 10 # 300 秒内,如果至少有 10 个 key 值变化 -- 则保存
save 60 10000 # 60 秒内,如果至少有 10000 个 key 值变化 -- 则保存

# RDB 持久化失败后,是否继续进行工作。yes -- 不进行工作;no -- 继续工作。默认情况下,RDB 失败后,redis 会停止接受所有的写请求。
stop-writes-on-bgsave-error yes

#rdbcompression在进行镜像备份时,是否进行压缩。
# 是否对 RDB 快照进行压缩存储,如果 yes 则采用 LZF 算法进行压缩,同时消耗 CPU 性能进行压缩
rdbcompression yes
## 存储快照后,是否进行 CRC64 算法进行数据校验,会增加 10% 的性能消耗
rdbchecksum yes

#dbfilename镜像备份文件的文件名,默认为dump.rdb
dbfilename dump.rdb

rdb-del-sync-files no

#dir数据库镜像备份的文件放置的路径。这里的路径跟文件名要分开配置是因为 Redis 在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该该
#临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放
dir /data/redis

slave-serve-stale-data yes
slave-read-only yes

# 当 replica 与 master 失去联系,或者复制正在进行的时候,replica 有两种表现:
# 1. "配置 yes" -- replica 仍然会应答客户端请求,但返回的数据可能是过时、或数据可能是空的
# 2. "配置 no" -- 一些命令的返回为 "SYNC with master in progress"
replica-serve-stale-data yes

# replica 服务器只读
replica-read-only yes

## 主从数据复制是否使用无硬盘复制功能
repl-diskless-sync no

# 当启用 "无硬盘备份",服务器等待一段时间后才会通过 "socket" 向从节点传送 RDB 文件,等待时间可配置
# "无硬盘备份" 一旦开始,就要等待当前 RDB 文件传输完成,才可接收新的请求,设置延迟时间可以让主节点接收更多的请求
# 延迟时间单位:秒,默认 5s,设置为 0,则会立即启动
repl-diskless-sync-delay 5

repl-diskless-load disabled
# 是否禁止 "tcp nodelay" 参数,默认 no,即 "使用 tcp nodelay"
    # yes:"主节点" 向 "从节点" 传送数据会减少数量和占用更小的网络带宽。会带来数据延迟
    # no:从节点数据延迟不会多,但备份需要的带宽相对较多
# 在数据量传输较大的场景下,建议使用 yes
repl-disable-tcp-nodelay no

# "从节点" 选举 "主节点" 优先级设置,数值越小、越容易被选举为 "主节点"。设置为 0 则永不被选举为 "主节点",默认 100
replica-priority 100
acllog-max-len 128

# 以非阻塞方式释放内存
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
#appendonly默认情况下, redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时
#的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较
#大范围的数据丢失。所以 redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。
#开启 append only 模式之后, redis 会把所接收到的每一次写操作请求都追加到
#appendonly.aof 文件中,当 redis 重新启动时,会从该文件恢复出之前的状态。但是这样
#会造成 appendonly.aof 文件过大,所以 redis 还支持了 BGREWRITEAOF 指令,对
#appendonly.aof 进行重新整理。所以我认为推荐生产环境下的做法为关闭镜像,开启
#appendonly.aof,同时可以选择在访问较少的时间每天对 appendonly.aof 进行重写一次。
appendonly yes
appendfilename "appendonly.aof"

#appendfsync设置对 appendonly.aof 文件进行同步的频率。 always 表示每次有写操作都进行同步,
#everysec 表示对写操作进行累积,每秒同步一次。这个需要根据实际业务场景进行配置
# AOF 持久化策略
    # no:表示不执行 fsync,通过系统保证数据同步到磁盘(速度最快)
    # always:表示每次写入都执行 fsync,保证数据同步到磁盘(慢、最安全)
    # everysec:每秒执行一次 fsync
appendfsync everysec

# yes:AOF rewrite 期间对新的 "写操作" 不进行 fsync,暂存在 "内存中",等 rewrite 后再写入
# no:可能造成延迟
no-appendfsync-on-rewrite no

# AOF 自动重写配置,当目前 AOF 文件超过上一次重写的 AOF 文件大小的 "百分之多少" 进行重写
# 即 "当 AOF 增长到一定大小的时候",redis 能够调用 "BGREWRITEAOF" 对日志文件进行重写
# 设置为 100 时,当 AOF 文件大小是上一次日志重写得到 AOF 文件大小的 2倍,则自动进行日志重写
auto-aof-rewrite-percentage 100

# 设置允许重写的最小 AOF 文件大小,避免达到了 "auto-aof-rewrite-percentage" 但文件大小任然很小还需要重写
auto-aof-rewrite-min-size 64mb

# yes:当截断的 AOF 文件被导入时,会自动发布一个 log 给客户端然后 load
# no:用户必须手动 redis-check-aof 修复 AOF 文件才可以
aof-load-truncated yes

# 加载 Redis 时,识别 "以 redis 开头" 的 AOF 文件
aof-use-rdb-preamble yes

# 如果达到最大时间限制(毫秒),redis 会记个 log,然后返回 error。
lua-time-limit 5000

# 慢查询时间设置,超过这个时间的查询,则记录。单位:微秒(1000000ms = 1s)
slowlog-log-slower-than 10000

# 慢查询日志长度,当一个新命令被写入日志时,最老的记录会被删除,当内存足够,这个长度就没有限制。
# 可以通过 "slowlog reset" 释放内存
slowlog-max-len 128

# 延迟监控,0 则关闭。用于监控 redis 中执行较慢的操作,用 LATENCY 打印 redis 实例命令耗时图标。通过 "config set" 命令动态设置
latency-monitor-threshold 0

## 客户端键空间订阅频道或模式
notify-keyspace-events ""

# hash 类型的数据结构在编码上可以使用 ziplist 和 hashtable
hash-max-ziplist-entries 512

# ziplist 中允许条目 value 值最大字节数,默认 64,建议更改为 1024
hash-max-ziplist-value 64

# 当取正值的时候:按照数据项个数来限定每个 quicklist 节点上的 ziplist 长度
# 当取负值的时候:按照占用字节数来限定每个 quicklist 节点上的 ziplist 长度
    # -5: 每个quicklist节点上的ziplist大小不能超过64 Kb。(注:1kb => 1024 bytes)
    # -4: 每个quicklist节点上的ziplist大小不能超过32 Kb。
    # -3: 每个quicklist节点上的ziplist大小不能超过16 Kb。
    # -2: 每个quicklist节点上的ziplist大小不能超过8 Kb。(-2是Redis给出的默认值)
    # -1: 每个quicklist节点上的ziplist大小不能超过4 Kb。
list-max-ziplist-size -2

# 参数表示一个 quicklist 两端不被压缩的节点个数
# 节点个数是指 quicklist 双向链表的节点个数,而不是指 ziplist 里面的数据项个数。
    # 0: 是个特殊值,表示都不压缩。这是Redis的默认值。
    # 1: 表示quicklist两端各有1个节点不压缩,中间的节点压缩。
    # 2: 表示quicklist两端各有2个节点不压缩,中间的节点压缩。
    # 3: 表示quicklist两端各有3个节点不压缩,中间的节点压缩。
list-compress-depth 0

# 数据量小于等于 set-max-intset-entries 用 intset,大于 set-max-intset-entries 用 set。
set-max-intset-entries 512

# 数据量小于等于 zset-max-ziplist-entries 用 ziplist,大于 zset-max-ziplist-entries 用 zset。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

# value大小小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse)
# 大于hll-sparse-max-bytes使用稠密的数据结构(dense),一个比16000大的value是几乎没用的,
# 建议的value大概为3000。如果对CPU要求不高,对空间要求较高的,建议设置到10000左右
hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100
#activerehashing开启之后, redis 将在每 100 毫秒时使用 1 毫秒的 CPU 时间来对 redis 的 hash 表进行重新 hash,可以降低内存的使用。当你的使用场景中,有非常严格的实时性需要,不能
#够接受 Redis 时不时的对请求有 2 毫秒的延迟的话,把这项配置为 no。如果没有这么严
#格的实时性要求,可以设置为 yes,以便能够尽可能快的释放内存

# yes:Redis 将在每 100毫秒 时使用 1毫秒 的 CPU 时间来对 redis 的 hash表 进行重新 hash,可以降低内存的使用
# no:不进行重新 hash
activerehashing yes

# 用来强制关闭传输缓慢的客户端
# 对于 normal client,第一个 0 表示取消 hard limit,第二个 0 和第三个 0 表示取消 soft limit
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# redis 执行任务的频率为 1s 除以 hz
hz 10

# 启用动态赫兹时,实际配置的赫兹将用作作为基线,但实际配置的赫兹值的倍数
dynamic-hz yes

# AOF 重写时,开启 "aof-rewrite-incremental-fsync" 后,系统会每 32MB 执行一次 fsync,避免过大的延迟峰值
aof-rewrite-incremental-fsync yes

# RDB 保存时,开启 "rdb-save-incremental-fsync" 后,系统会每 32MB 执行一次 fsync
rdb-save-incremental-fsync yes

jemalloc-bg-thread yes

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值