# Redis 配置文件示例。
# 请注意,为了读取配置文件,Redis 必须以文件路径作为第一个参数启动
# ./redis-server /path/to/redis.conf

################################## INCLUDES ###################################


# 用来引入多个配置文件,需要注意的是后面的配置会覆盖前面相同的配置
# include /path/to/local.conf
# include /path/to/other.conf

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

#
# 在启动时加载自定义的模块。如果服务器无法加载模块,它将中止。可以使用多个 loadmodule 指令。
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so

################################## NETWORK #####################################


#
# 绑定可以访问的ip 一般只绑定到本机
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
bind 127.0.0.1

# 启用保护模式
protected-mode yes

# 端口
port 6379

# 最大积压请求数量
tcp-backlog 511

# 客户端空闲多少秒自动断开连接 默认不断开
timeout 0

# 多长时间发送一次ack请求 检查客户端是否处于健康状态
tcp-keepalive 300

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

# 是否开启守护进程 开启后在后台运行
daemonize no

# 可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。
supervised no

# 配置pid文件路径。当redis以守护模式启动时,如果没有配置pidfile,pidfile默认值是/var/run/redis.pid 。
pidfile /var/run/redis_6379.pid

# 日志级别
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
loglevel notice

# 日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到  /dev/null
logfile ""

# 数据库的数量
databases 16

# 是否显示启动图标 启动的时候那个图标
always-show-logo yes

################################ SNAPSHOTTING  ################################
#
# 持久化策略
# 900秒内有一条写操作
# 300秒内有10次写操作
# 60秒内有一万次写操作
# 以上三种情况都会触发rdb模式的持久化
save 900 1
save 300 10
save 60 10000

# 如果持久化失败 禁止写服务 否则用户可能不会发现灾难发生过
stop-writes-on-bgsave-error yes

# 是否压缩rdb文件
rdbcompression yes

# 是否校验rdb文件
rdbchecksum yes

# rdb文件的名字
dbfilename dump.rdb

# 删除未启用持久性的实例中复制使用的 RDB 文件。
# 默认情况下,此选项是禁用的,但是在某些环境中,出于法规或其他安全考虑,主服务器将 RDB 文件持久保存在磁盘上以提供副本,或由副本存储在磁盘上以便为初始同步加载它们,应该是尽快删除。
# 请注意,此选项仅适用于同时禁用 AOF 和 RDB 持久性的实例,否则完全忽略。获得相同效果的另一种(有时更好)方法是在主实例和副本实例上使用无盘复制。然而,在副本的情况下,无盘并不总是一种选择。
rdb-del-sync-files no

# 数据库存放目录。必须是一个目录,aof文件也会保存到该目录下。
dir ./
############################## APPEND ONLY MODE ###############################

# 是否开启aof持久化
appendonly no

# aof持久化文件的名字
appendfilename "appendonly.aof"

# aof持久化策略
# 每一次写操作持久化
# 每一秒持久化
# 不持久化

# appendfsync always
appendfsync everysec
# appendfsync no

# 指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写AOF文件期间会存在大量磁盘IO,
# 此时,在某些linux系统中,调用fsync可能会阻塞。
no-appendfsync-on-rewrite no

# 当AOF文件增长到64mb时 触发bgrewritraof对日志进行从写,再之后的每一次文件大小达到前一次的2倍时 都触发一次。
#  这里的bgrewrite可以去掉多于的中间状态 比如对同一个key修改了1000次 那么bgrewriteaof后 关于该key只会有最后的一次操作的命令
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# redis在启动时可以加载被截断的AOF文件,而不需要先执行 redis-check-aof 工具
aof-load-truncated yes

#  开启混合持久化
aof-use-rdb-preamble yes