redis.conf

redis 版本:5.0.14

# redis启动命令(redis-server路径 redis.conf路径)
./redis-server /path/to/redis.conf

# 配置文件中的单位是大小写不敏感的!
# units are case insensitive so 1GB 1Gb 1gB are all the same.

INCLUDES

INCLUDES 包含

# 将其他配置文件导入到本配置文件
include /path/to/local.conf
include /path/to/other.conf

MODULES

MODULES 模块

# 启动时加载模块
loadmodule /path/to/my_module.so
loadmodule /path/to/other_module.so

NETWORK

NETWORK 网络

# 绑定 ip(如果注释掉则表示redis可以接受来自所有地址的请求)
bind 127.0.0.1

# 保护模式(默认开启)
protected-mode yes

# 端口(默认 6379)
port 6379

# TCP监听的最大容纳数量
tcp-backlog 511

# 监听传入连接的unix套接字的文件路径及权限(默认被注释掉,不监听unix套接字)
unixsocket /tmp/redis.sock
unixsocketperm 700

# 若客户端空闲等待时间超过该时间,则关闭连接(0表示禁用)
timeout 0

# 服务端开启长连接(0表示禁用,默认为 300)
tcp-keepalive 0

GENERAL

GENERAL 通用

# 以后台守护进程的形式运行(默认为 no)
daemonize yes

# (不了解)
# upstart或systemd运行redis时的监控树交互配置(默认为 no)
# supervised no 不进行监控树交互
# supervised upstart 通过将redis置于 SIGSTOP 模式进行upstart信号通知
# supervised systemd 通过将 READY=1 写入 $NOTIFY_SOCKET 进行systemd信号通知
# supervised auto 基于 UPSTART_JOB/NOTIFY_SOCKET 环境变量来检测是upstart还是systemd
supervised no

# 如果以守护进程方式运行,redis的pid文件存储地址(默认为 /var/run/redis.pid)
pidfile /var/run/redis_6379.pid

# 日志级别
# debug(具体操作信息,适合开发/测试环境)
# verbose(许多信息很少有用,但不像debug级别那样混乱)
# notice(数量适度,适合生产环境)
# warning(只记录重要或关键信息)
loglevel notice

# 日志路径和文件名(默认为 "")
logfile "/usr/local/redis-5.0.14/log/notice.log"

# 开启日志记录到系统日志(默认被注释掉)
syslog-enabled no
# 指定系统日志标识(默认被注释掉)
syslog-ident redis
# 指定系统日志工具(默认被注释掉)
# 必须是 USER/LOCAL0-LOCAL7
syslog-facility local0

# 数据库数量(默认为 16)
# db 0~15
databases 16

# 始终在启动日志中显示 logo
always-show-logo yes

SNAPSHOTTING

SNAPSHOTTING 快照(RDB 配置)

# 将数据持久化到磁盘(如果注释掉则表示关闭该功能,默认以 RDB 方式持久化)
# save p1 p2  表示在p1秒内,数据库中至少有p2个key发生改变才会做一次save操作
save 900 1
save 300 10
save 60 10000

# 如果后台持久化出现错误,则停止接收写请求(默认开启)
stop-writes-on-bgsave-error yes

# 压缩rdb文件(关闭可节省CPU开销,默认开启)
rdbcompression yes

# 生成和加载rdb文件时进行检查校验(关闭可提升性能,默认开启)
rdbchecksum yes

# RDB持久化生成的文件名
dbfilename dump.rdb

# rdb文件和aof文件的存储目录
dir ./

REPLICATION

REPLICATION 复制

# 主从配置
# replicaof <masterip> <masterport>  slave服务需要配置master服务的ip port
replicaof 127.0.0.1 6379

# 主从数据同步密码认证,如果主节点配置了密码,从节点需要配置主节点的密码
masterauth <master-password>

# 当从节点与主节点失去连接或正在复制时,从节点仍可以处理客户端请求
replica-serve-stale-data yes

# 从节点仅处理读请求,不处理写请求(默认为 yes)
replica-read-only yes

# 无磁盘复制,通过网络进行,避免全量同步时的磁盘IO
# 对于慢速磁盘和快速(大带宽)网络,无磁盘复制工作得更好
repl-diskless-sync no

# 无磁盘复制时服务器等待的延迟时间(0表示不延迟,默认为 5)
# 单位:秒
repl-diskless-sync-delay 5

# 从节点间隔一定时间向主节点发送ping命令(默认为 10)
# 单位:秒
repl-ping-replica-period 10

# 超时判定时间(默认被注释掉)
# 单位:秒
repl-timeout 60

# yes表示向从节点发送数据占用带宽低,延迟更高;no表示延迟低,占用带宽更高
repl-disable-tcp-nodelay no

# 配置从节点的缓冲区大小(默认被注释掉)
repl-backlog-size 1mb

# 主节点在一定时间内没有副本连接,释放缓冲区(0表示不释放缓冲区,默认被注释掉)
# 单位:秒
repl-backlog-ttl 3600

# 从节点的优先级(0表示该从节点永远不会晋升为主节点,默认为 100)
# 哨兵会选举优先级最低的从节点晋升为主节点!
replica-priority 100

# 如果主节点目前连接的延迟小于10秒的副本数量小于3个,则拒绝写请求
# 0表示关闭该功能,默认min-replicas-to-write为 0,min-replicas-max-lag为 10
min-replicas-to-write 3
min-replicas-max-lag 10

# 从节点向连接的主节点上报特定的ip和端口(默认被注释掉)
replica-announce-ip 5.5.5.5
replica-announce-port 1234

SECURITY

SECURITY 安全

# 连接该节点需要密码验证(默认不需要)
# 最好设置密码,设置的密码强度要足够大,否则很容易被破解
requirepass yourpassword

# 把一些危险命令进行重命名(""表示禁用,默认被注释掉)
rename-command CONFIG ""

CLIENTS

CLIENTS 客户端

# 同时连接客户端的最大数量(默认被注释掉)
maxclients 10000

MEMORY MANAGEMENT

MEMORY MANAGEMENT 内存管理

# 限定使用的最大内存
maxmemory 500MB

# 内存不足时key的淘汰策略(默认为 noeviction)
# volatile-lru,使用LRU算法,在设置了过期时间的key中选择
# allkeys-lru,使用LRU算法,在所有的key中选择
# volatile-lfu,使用LFU算法,在设置了过期时间的key中选择
# allkeys-lfu,使用LFU算法,在所有的key中选择
# volatile-random,在设置了过期时间的key中随机选择
# allkeys-random,在所有的key中随机选择
# volatile-ttl,在设置了过期时间的key中,选择过期时间最近的key
# noeviction,不淘汰key,对任何写操作(使用额外内存)返回错误
maxmemory-policy volatile-lru

# 策略检查的样本数量(默认为 5)
maxmemory-samples 5

# 从节点忽略其 maxmemory配置(默认开启)
replica-ignore-maxmemory yes

LAZY FREEING

LAZY FREEING 懒惰删除

# 以非阻塞的方式释放内存(默认被注释掉)
# 执行特定命令后另外的线程会在后台以尽可能快的速度删除对象
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

APPEND ONLY MODE

APPEND ONLY MODE 附加模式(AOF 配置)

# 开启AOF持久化方式(默认关闭)
# 如果打开了AOF,Redis启动时会优先加载aof文件,因为 AOF的持久化表现更好。
appendonly no

# AOF持久化生成的文件名
appendfilename "appendonly.aof"

# fsync的三种模式(默认为 everysec)
# no:不执行fsync,让操作系统来决定什么时候进行刷盘,速度最快
# always:每次写入aof文件都会执行fsync,速度慢,但数据更安全
# everysec:每秒执行一次fsync,折中方式
appendfsync everysec

# 禁止在进行BGSAVE或BGREWRITEAOF时在主进程中调用fsync(默认为 no)
no-appendfsync-on-rewrite no

# 自动重写aof文件
# 如果当前文件比上次重写文件的增长比例大于100%,则会触发重写,要重写的文件大小不能小于64mb
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# redis在恢复时,如果加载的aof文件中最后一条指令存在问题,是否继续启动(默认为 yes)
# yes表示继续启动,并发出日志通知用户该事件
# no表示服务中止并出现错误,拒绝启动。用户需要使用“redis-check-aof”程序修复该aof文件
aof-load-truncated yes

# aof-rdb混合持久化
# 产生的AOF文件前半段是RDB格式的全量数据,后半段是AOF格式的增量数据
aof-use-rdb-preamble yes

LUA SCRIPTING

LUA SCRIPTING lua 脚本

# lua脚本的最大限制执行时间(单位:毫秒)
lua-time-limit 5000

REDIS CLUSTER

REDIS CLUSTER redis 集群

# 开启集群,将该节点作为集群节点启动(默认被注释掉)
cluster-enabled yes

# 集群配置文件(由redis节点创建和更新,默认被注释掉)
cluster-config-file nodes-6379.conf

# 集群节点超时时间(默认被注释掉)
# 单位:毫秒
cluster-node-timeout 15000

# 集群副本有效性因子(0表示slave将始终尝试故障转移为master,默认被注释掉)
# (node-timeout * replica-validity-factor) + repl-ping-replica-period
# 计算时间(秒),如果slave无法与master通信的时间超过了该时间,则slave将不会尝试故障转移
cluster-replica-validity-factor 10

# 集群迁移屏障(默认被注释掉)
# 仅当master至少有1个其他工作副本时,副本才会迁移
cluster-migration-barrier 1

# 集群需要全覆盖(默认为 yes,被注释掉)
# 如果redis集群节点检测到至少有一个未覆盖的哈希槽(没有可用的节点提供服务),则会停止接受查询
# 如果集群部分关闭(例如不再覆盖一系列哈希槽),整个集群将不可用
# 当所有插槽再次被覆盖,集群将自动返回可用状态
cluster-require-full-coverage yes

# 集群副本无故障转移(默认被注释掉)
# 在主节点故障期间副本不会尝试故障转移,但主节点仍然可以执行手动故障转移
cluster-replica-no-failover no

CLUSTER DOCKER/NAT support

CLUSTER DOCKER/NAT support docker/NAT 集群支持

# 配置集群节点的公共地址(默认被注释掉,使用redis群集自动检测)
# 节点的ip地址,客户端端口,集群消息总线端口
cluster-announce-ip 10.1.1.5
cluster-announce-port 6379
cluster-announce-bus-port 6380

SLOW LOG

SLOW LOG 慢查询日志

# 命令的执行时间要超过该值才会被记录(负数表示不记录任何操作,0表示强制记录每条命令)
# 单位:微秒(1000000相当于1秒)
slowlog-log-slower-than 10000

# 慢日志最多保存记录条数(无限制,但消耗内存)
slowlog-max-len 128

LATENCY MONITOR

LATENCY MONITOR 延迟监控

# 延迟监控阈值(0表示关闭该功能,默认关闭)
# 执行时间大于等于该值的操作才会被记录(单位:毫秒)
latency-monitor-threshold 0

EVENT NOTIFICATION

EVENT NOTIFICATION 事件通知

# 指定服务要发送哪些事件通知(""表示禁用该功能,默认为 "")
# 参数是由零个或多个字符组成的字符串,字符如下所示:
# K:键空间通知,所有通知以__keyspace@<db>__为前缀
# E:键事件通知,所有通知以__keyevent@<db>__为前缀
# g:DEL、EXPIRE、RENAME等类型无关的通用命令的通知
# $:字符串命令的通知
# l:列表命令的通知
# s:集合命令的通知
# h:哈希命令的通知
# z:有序集合命令的通知
# x:过期事件(每当有过期键被删除时发送)
# e:驱逐(evict)事件(每当有键因为maxmemory策略而被删除时发送)
# A:参数 g$lshzxe 的别名(“AKE”字符串意味着所有事件)
notify-keyspace-events ""

ADVANCED CONFIG

ADVANCED CONFIG 高级配置

# hash类型使用ziplist编码的最大限制
# 当存储条目的数量和元素大小都不超过设置的值时,会采用特殊的节省空间的编码策略 ziplist
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# list类型使用ziplist编码的最大限制
# 正数表示最大元素个数,负数表示最大大小(使用-5到-1)
# -5:最大大小:64kb,不建议用于正常工作
# -4:最大大小:32kb,不推荐
# -3:最大大小:16kb,可能不推荐
# -2:最大大小:8kb,推荐
# -1:最大大小:4kb,推荐
list-max-ziplist-size -2
# list压缩程度
# 0:不压缩
# 1:[head]->node->...->node->[tail]
#    两端各有1个节点不压缩(head,tail不压缩),中间所有节点压缩
# 2:[head]->[next]->node->...->node->[prev]->[tail]
#    两端各有2个节点不压缩(head,next,prev,tail不压缩),中间所有节点压缩
# 3:[head]->[next]->[next]->node->...->node->[prev]->[prev]->[tail]
#    以此类推...
list-compress-depth 0

# set类型使用intset编码的最大限制
# 当所有数据都是string类型,并且都是基数为10、范围为64位有符号整数的整数时,采用特殊编码 intset
set-max-intset-entries 512

# zset类型使用ziplist编码的最大限制
# 当存储条目的数量和元素大小都不超过设置的值时,会采用特殊的节省空间的编码策略 ziplist
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

# HyperLogLog稀疏存储的最大字节数
hll-sparse-max-bytes 3000

# stream中每个宏节点能够占用的最大内存和可存储条目的最大数量(0表示取消对应的限制)
stream-node-max-bytes 4096
stream-node-max-entries 100

# 主动重置哈希表
# redis每100毫秒使用1毫秒(CPU时间)来对redis的主哈希表进行rehash,尽可能释放内存
activerehashing yes

# 客户端输出缓冲区限制(0表示取消限制)
# client-output-buffer-limit <客户端> <hardlimit> <softlimit> <softseconds>
# 如果缓冲区达到了 hardlimit,或者达到 softlimit 且持续了 softseconds,客户端会立即断开连接
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 客户端查询缓冲区大小限制
client-query-buffer-limit 1gb

# 批量请求的大小限制
proto-max-bulk-len 512mb

# redis会根据该值来检查要执行的任务(默认为 10)
# 该值越大,redis在空闲时占用CPU越多,但处理将更快更精确(范围1~500,最好不超过100)
hz 10

# 开启动态 hz
# 实际配置的hz将用作基线,当有更多的客户端连接时,会根据需要使用hz值的倍数
dynamic-hz yes

# aof文件在重写时,每生成 32MB 的数据就会同步一次
# 分步将文件提交到磁盘,避免较大的延迟峰值
aof-rewrite-incremental-fsync yes

# rdb文件在保存时,每生成 32MB 的数据就会同步一次
# 分步将文件提交到磁盘,避免较大的延迟峰值
rdb-save-incremental-fsync yes

# LFU淘汰策略配置(默认被注释掉)
# 对数因子,计数器衰减时间(单位:分钟,0表示每次扫描计数器时计数器都会衰减,默认为 1)
lfu-log-factor 10
lfu-decay-time 1

ACTIVE DEFRAGMENTATION

ACTIVE DEFRAGMENTATION 主动碎片整理(实验性功能)

# 开启主动碎片整理(默认被注释掉)
activedefrag yes

# 开始碎片整理的最小碎片浪费量(默认被注释掉)
# 当碎片达到 100mb 时,开始碎片整理
active-defrag-ignore-bytes 100mb

# 开始碎片整理的最低阈值(默认被注释掉)
# 单位:%
active-defrag-threshold-lower 10

# 开始碎片整理的最高阈值(默认被注释掉)
# 单位:%
active-defrag-threshold-upper 100

# 碎片整理最小CPU使用率(默认被注释掉)
# 碎片整理占用CPU的最小百分比
active-defrag-cycle-min 5

# 碎片整理最大CPU使用率(默认被注释掉)
# 碎片整理占用CPU的最大百分比
active-defrag-cycle-max 75

# 碎片整理扫描处理的set/hash/zset/list字段的最大数目(默认被注释掉)
active-defrag-max-scan-fields 1000

其他配置

其他

# 将redis的不同线程和进程固定到系统中的特定CPU上,以最大限度地提高服务器的性能(默认被注释掉)
# server/io线程,bio线程,aof重写子进程,bgsave子进程
server_cpulist 0-7:2
bio_cpulist 1,3
aof_rewrite_cpulist 8-11
bgsave_cpulist 1,10-11

# 忽略警告(默认被注释掉)
# 如果redis检测到系统处于不良状态,可能会发出警告,甚至拒绝启动(使用空格分隔警告列表)
ignore-warnings ARM64-COW-BUG
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐