# Redis configuration file example
# 加引号在配置中会显示为红色,更容易查找
# 对运行中的redis, 可以通过config get, config set命令动态改变两个参数
################################## INCLUDES ###################################
# include /path/to/local.conf
# include /path/to/other.conf
# 当配置多个redis时,可能大部分配置一样,而对于不同的redis,只有少部分配置需要定制
# 就可以配置一个公共的模板配置。
# 对于具体的reids,只需设置少量的配置,并用include把模板配置包含进来即可。
#
# 值得注意的是,对于同一个配置项,redis只对最后一行的有效
# 所以为避免模板配置覆盖当前配置,应在配置文件第一行使用include
# 当然,如果模板配置的优先级比较高,就在配置文件最后一行使用include
# 后台运行
daemonize yes
pidfile "/var/run/redis6379.pid"
port 6379
# 主从复制 在slave设置
# slaveof 127.0.0.1 6380
# 本机密码
requirepass "password"
# masterauth "password" # master密码 本机为slave时需要设置
# 此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux
# 系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统
# 并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定
tcp-backlog 511
# 指定 redis 绑定的网卡 如果不进行设置,那么将处理所有请求
# bind 10.1.1.4 192.168.1.1
# bind 127.0.0.1
# 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
# 0 是关闭此设置
timeout 0
# 指定TCP连接是否为长连接,"探测"信号有server端维护。默认为0.表示禁用
# 在 Linux 上,指定值(秒)用于发送 ACKs 的时间。注意关闭连接需要双倍的时间
# 指定TCP连接是否为长连接,”侦探”信号由server端维护,长连接将会额外的增加server端的开支
# 默认为0.表示禁用,非0值表示开启长连接 ;侦探”信号的发送间隔将有linux系统决定
# 在多次”侦探”后,如果对等端仍不回复,将会关闭连接,否则连接将会被保持开启.
# client端socket也可以通过配置keepalive选项,开启”长连接”
# A reasonable value for this option is 60 seconds.
tcp-keepalive 0
# log 等级分为4 级,debug,verbose, notice, 和warning。生产环境下一般开启notice
# debug 记录很多信息,用于开发和测试
# varbose 有用的信息,不像 debug 会记录那么多
# notice 普通的 verbose ,常用于生产环境
# warning 只有非常重要或者严重的信息会记录到日志
loglevel notice
logfile "/bak/log/redis/redis6379.log"
# 设置数据库的个数,可以使用SELECT 命令来切换数据库。默认数据库是0号库。默认16个库
databases 16
################################ SNAPSHOTTING 快照 ################################
# 指出在多长时间内,有多少次更新操作,就将数据同步到数据文件 rdb
# In the example below the behaviour will be to save:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
save 900 1
save 300 10
save 60 10000
# 当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端write请求
stop-writes-on-bgsave-error yes
# 是否启用文件LZF算法压缩rdb文件,默认为yes。压缩可能需要额外的cpu开支,
# 不过这能够有效的减小rdb文件的大,有利于存储/备份/传输/数据恢复
rdbcompression yes
# 从版本RDB版本5开始,一个CRC64的校验就被放在了文件末尾。
# 这会让格式更加耐攻击,但是当存储或者加载rbd文件的时候会有一个10%左右的性能下降,
# 为了达到性能的最大化,你可以关掉这个配置项。
rdbchecksum yes
dbfilename dump.rdb
#dir ./
dir "/opt/redis6379"
################################# Replication #################################
# 当slave服务器和master服务器失去连接后,或者当数据正在复制传输的时候,如果此参数值设置yes
# slave服务器可以继续接受客户端的请求,否则会返回给请求的客户端如下信息SYNC with master in progress
slave-serve-stale-data yes
# 是否允许slave服务器节点只提供读服务
slave-read-only yes
# 从库会按照一个时间间隔向主库发送 PINGs. 可以通过 repl-ping-slave-period 设置这个时间间隔,默认是 10 秒
# repl-ping-slave-period 10
# repl-timeout 设置主库批量数据传输时间或者 ping 回复时间间隔,默认值是 60 秒
# 一定要确保 repl-timeout 大于 repl-ping-slave-period
# repl-timeout 60
# Replication SYNC strategy: disk or socket.
# 在 slave socket 的 SYNC 后禁用 TCP_NODELAY
# 如果选择“ yes ” ,Redis 将使用一个较小的数字 TCP 数据包和更少的带宽将数据发送到 slave , 但是这可能导致数据
# 发送到 slave 端会有延迟 , 如果是 Linux kernel 的默认配置,会达到 40 毫秒 .
# 如果选择 "no" ,则发送数据到 slave 端的延迟会降低,但将使用更多的带宽用于复制 .
repl-diskless-sync no
repl-diskless-sync-delay 5
# 采用无延迟同步 默认no 如果选择 "no" ,则发送数据到 slave 端的延迟会降低,但将使用更多的带宽用于复制
repl-disable-tcp-nodelay no
# 设置复制的后台日志大小。
# 复制的后台日志越大, slave 断开连接及后来可能执行部分复制花的时间就越长。
# 后台日志在至少有一个 slave 连接时,仅仅分配一次。
# repl-backlog-size 1mb
# 在 master 不再连接 slave 后,后台日志将被释放。下面的配置定义从最后一个 slave 断开连接后需要释放的时间(秒)。
# 0 意味着从不释放后台日志
# repl-backlog-ttl 3600
# 适用Sentinel模块(unstable,M-S集群管理和监控),需要额外的配置文件支持。slave的权重值,
# 默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave,并提升为master
# 如果权重值为0,表示此slave为"观察者",不参与master选举
slave-priority 100
################################### LIMITS ####################################
#maxclient 10000
maxmemory 1GB
# 内存超过阈值时的逐出策略 支持6种数据逐出策略 默认 noeviction
# volatile-lru 利用LRU算法移除设置过过期时间的key LRU:最近使用 Least Recently Used
# volatile-ttl 仅逐出设置了过期时间的数据,并且是按照TTL有小到大的顺序进行逐出
# allkeys-lru 按照LRU算法逐出原有数据
# volatile-random 随机逐出原有数据,但仅逐出设置了过期时间的数据
# allkeys-random 随机逐出原有数据
# noeviction 不逐出任何数据,新数据的写入会得到一个错误信息
# 注意:对于上面的策略,如果没有合适的 key 可以移除,当写的时候 Redis 会返回一个错误
maxmemory-policy volatile-lru
# LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法 ( 为了节省内存 )
# The default of 5 produces good enough results. 10 Approximates very closely
# true LRU but costs a bit more CPU. 3 is very fast but not very accurate.
# 5 默认好产生足够的结果。10 非常密切地接近
# 真实 LRU 但会占用一些CPU。3 是速度非常快,但不是很准确
# maxmemory-samples 5
############################## APPEND ONLY MODE ###############################
# 默认情况下, redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,
# 如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。
# 所以 redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。
# 开启 append only 模式之后, redis 会把所接收到的每一次写操作请求都追加到 appendonly.aof 文件中,
# 当 redis 重新启动时,会从该文件恢复出之前的状态
# Append Only File(AOF)是提供了更好持久性的可选的持久化模式 默认关闭
appendonly no
# 指定写入的文件名
appendfilename "appendonly.aof"
# Redis提供三种不同的模式
# always 速度慢,但最安全,每次write都异步持久化
# everysec 默认选项,每秒一次的异步保存,速度和数据安全的折中方案
# no 速度较快,不执行同步,让系统自动刷新数据
appendfsync everysec
# 指定是否在后台aof文件rewrite期间调用fsync,默认为no,AOF 策略设置为 always 或者 everysec 时,后台处理进程
# ( 后台保存或者 AOF 日志重写 ),会执行大量的 I/O 操作.在某些 Linux 配置中会阻止过长的 fsync() 请求。注意现在
# 没有任何修复,即使 fsync 在另外一个线程进行处理
no-appendfsync-on-rewrite no
# 指定Redis重写aof文件的条件,默认为100,表示与上次rewrite的aof文件大小相比,当前aof文件
# 增长量超过上次afo文件大小的100%时,就会触发background rewrite。若配置为0,则会禁用自动rewrite
auto-aof-rewrite-percentage 100
# 指定触发rewrite的aof文件大小。若aof文件小于该值,即使当前文件的增量比例达到
# auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时满足时,才会触发rewrite。
auto-aof-rewrite-min-size 64mb
# redis在启动的时候可以加载被截断的AOF文件,默认启用
aof-load-truncated yes
################################ LUA SCRIPTING ###############################
# 一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000
lua-time-limit 5000
################################## SLOW LOG ###################################
# 设定执行时间,单位是微秒,执行时长超过该时间的命令将会被记入log。-1表示不记录slow log; 0强制记录所有命令
# 1秒 = 1000000微秒
slowlog-log-slower-than 10000
#slow log的长度。最小值为0。如果日志队列已超出最大长度,则最早的记录会被从队列中清除。
# 对日志长度没有限制,只是要注意它会消耗内存 可以通过 SLOWLOG RESET 回收被慢日志消耗的内存
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
# redis延迟监控子系统在运行时,会抽样检测可能导致延迟的不同操作
# 系统只记录超过设定值的操作,单位是毫秒,0表示禁用该功能
latency-monitor-threshold 0
############################# EVENT NOTIFICATION 事件通知 ##############################
# 事件通知,当事件发生时,redis可以通知Pub/Sub客户端
# 事件类型由单个字符来标识:
# K Keyspace 事件,以 _keyspace@_ 的前缀方式发布
# E Keyevent 事件,以 _keysevent@_ 的前缀方式发布
# g 通用事件(不指定类型),像 DEL, EXPIRE, RENAME, …
# $ String 命令
# s Set 命令
# h Hash 命令
# z 有序集合命令
# x 过期事件(每次 key 过期时生成)
# e 清除事件(当 key 在内存被清除时生成)
# A g$lshzxe 的别称,因此 ”AKE” 意味着所有的事件
# 默认所用的通知被禁用,因为用户通常不需要改特性,并且该特性会有性能损耗
# 空串表示禁用事件通知
notify-keyspace-events ""
############################### ADVANCED CONFIG 高级配置 ###############################
# hash类型的数据结构在编码上可以使用ziplist和hashtable。ziplist的特点就是文件存储(以及内存存储)
# 所需的空间较小,在内容较小时,性能和hashtable几乎一样.因此redis对hash类型默认采取ziplist。如果
# hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable
# ziplist中允许存储的最大条目个数,默认为512
hash-max-ziplist-entries 512
# ziplist中允许条目value值最大字节数,默认为64,建议为1024
hash-max-ziplist-value 64
# 对于list类型,将会采取ziplist,linkedlist两种编码类型
list-max-ziplist-entries 512
list-max-ziplist-value 64
# intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable
set-max-intset-entries 512
# zset为有序集合,有2中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
# Redis 将在每 100 毫秒时使用 1 毫秒的 CPU 时间来对 redis 的 hash 表进行重新 hash ,可以降低内存的使用
# 当你的使用场景中,有非常严格的实时性需要,不能够接受 Redis 时不时的对请求有 2 毫秒的延迟,把这项配置为 no
# 如果没有这么严格的实时性要求,可以设置为 yes ,以便能够尽可能快的释放内存
activerehashing yes
# 客户端的输出缓冲区的限制,因为某种原因客户端从服务器读取数据的速度不够快,
# 可用于强制断开连接(一个常见的原因是一个发布 / 订阅客户端消费消息的速度无法赶上生产它们的速度)
# 客户端输出缓存限制强迫断开读取速度比较慢的客户端
# 有三种类型的限制
# normal -> 正常客户端
# slave -> slave 和 MONITOR 客户端
# pubsub -> 至少订阅了一个 pubsub channel 或 pattern 的客户端
# 客户端输出缓存限制语法如下(时间单位:秒)
# client-output-buffer-limit <类别> <强制限制> <软性限制> <软性时间>
# 一旦达到硬限制客户端会立即断开,或者达到软限制并保持达成的指定秒数(连续)。
# 默认 normal 客户端不做限制,因为他们在一个请求后未要求时(以推的方式)不接收数据,
# 只有异步客户端可能会出现请求数据的速度比它可以读取的速度快的场景。
# 把硬限制和软限制都设置为 0 来禁用该特性
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 设置Redis后台任务执行频率,比如清除过期键任务。
# 设置范围为1到500,默认为10.越大CPU消耗越大,延迟越小。
# 建议不要超过100
hz 10
# 当一个子节点重写 AOF 文件时,如果启用下面的选项,则文件每生成 32M 数据进行同步
# 这有助于更快写入文件到磁盘避免延迟
aof-rewrite-incremental-fsync yes
转载于:https://my.oschina.net/direnjie/blog/596601