Redis.conf配置文件内容详解

#默认以后台方式运行
daemonize yes
    
#指定redis pid文件
pidfile /data/apps/var/redis2/redis2.pid
   
#指定redis启动占用的端口 
port 6380

#此项配置内容属于redis优化内容    
tcp-backlog 2048

#redis绑定的ip或者主机名,注意如果此处绑定设置为127.0.0.1,将会出现其他服务器上的服务连接至此台redis失败的情况    
bind redis1

#指定socket连接空闲时间(秒),如果连接空闲超时将会关闭连接,设置为0表示用不超时
timeout 0

#指定tcp连接是否为长连接,长连接将会额外增加server端的开支,默认为0表示禁用
tcp-keepalive 0

#指定日志级别,notice适用于生产环境
loglevel notice

#指定log日志位置
logfile "/usr/local/redis.log"

#是否将日志输出到系统日志,默认为no
syslog-enabled no

#指定syslog的标示符,如果'syslog-enabled'是no,则这个选项无效
syslog-ident redis

#设定redis所允许的最大"db簇"的个数,默认为16个簇
databases 16

#如果snapshot过程中出现错误,即数据持久化失败,是否终止所有的客户端write请求
stop-writes-on-bgsave-error yes

#是否启用rdb文件压缩手段,默认为yes
rdbcompression yes

#是否对rdb文件使用CRC64校验和,默认为"yes",那么每个rdb文件内容的末尾都会追加CRC校验和
rdbchecksum yes

#指定rdb文件的名称
dbfilename dump.rdb

#指定rdb/AOF文件的目录位置
dir /usr/local/data/redis/

#设置redis占用最大内存数,如果超过redis会试图删除即将过期的key,而保护具有较长生命周期的key
maxmemory 5gb

#当内存占用超过maxmemory限定时,触发主动清理策略
maxmemory-policy allkeys-lru
#清理策略方式如下:
 volatile-lru:只对设置了过期时间的key进行LRU(默认值)
 allkeys-lru : 删除lru算法的key
 volatile-random:随机删除即将过期key
 allkeys-random:随机删除
 volatile-ttl : 删除即将过期的
 noeviction : 永不过期,返回错误

#设置replication,使用slaveof把一个redis实例设置为另一个redis server的从库。
slaveof redis2 6379

#当slave丢失与master的连接时,或者slave仍然在于master进行数据同步时(还没有与master保持一致),slave可以有两种方式来响应客户端请求:
slave-serve-stale-data yes
方式:
如果 slave-serve-stale-data 设置成 'yes' (the default) slave会仍然响应客户端请求,此时可能会有问题
如果 slave-serve-stale data设置成  'no'  slave会返回"SYNC with master in progress"这样的错误信息。 但 INFO 和SLAVEOF命令除外

#slave服务器是否可写
slave-read-only yes

#slave与master的连接,是否禁用TCP nodelay选项
yes表示禁用,那么socket通讯中数据将会以packet方式发送,可以提高socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟
"no"表示开启tcp nodelay选项,任何数据都会被立即发送,及时性较好,但是效率较低,建议设置为no
repl-disable-tcp-nodelay no

#slave的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低的slave,并提升为master,适用Sentinel模块,需要额外的配置文件支持
slave-priority 100

#是否开启aof功能,"yes"表示开启,在开启情况下,aof文件同步功能才生效,默认为"no",对master机器,建议使用AOF,对于slave,建议关闭
appendonly no

#aof文件存储路径
appendfilename "appendonly.aof"

#任何一个aof记录都立即进行文件同步(磁盘写入),安全性最高;如果write请求比较密集,将会造成较高的磁盘IO开支和响应延迟,everysec每秒同步一次
appendfsync everysec

#在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间,默认为no,表示"不暂缓",新的aof记录仍然会被立即同步
no-appendfsync-on-rewrite no

#aof每次rewrite之后,都会记住当前aof文件的大小,当文件增长到一定比例后,继续进行aof rewrite
auto-aof-rewrite-percentage 100

#aof rewrite触发时机,最小文件尺寸
auto-aof-rewrite-min-size 64mb

#lua脚本运行的最大时间
lua-time-limit 5000

#慢操作日志记录
slowlog-log-slower-than 10000

#慢操作日志保留的最大条数
slowlog-max-len 128

#键空间通知,""表示关闭
notify-keyspace-events ""

##ziplist中允许存储的最大条目个数
hash-max-ziplist-entries 512

#ziplist中允许条目value值最大字节数
hash-max-ziplist-value 64

#对于list类型,将会采取ziplist,linkedlist两种编码类型
list-max-ziplist-entries 512

#ziplist中允许条目value值最大字节数
list-max-ziplist-value 64

#intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable
set-max-intset-entries 512

#设置同上
zset-max-ziplist-entries 128

#设置同上
zset-max-ziplist-value 64

#是否开启顶层数据结构的rehash功能,如果内存允许,请开启
activerehashing yes

#客户端buffer控制
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 512mb 512mb 600
client-output-buffer-limit pubsub 32mb 8mb 60

#Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁
hz 10

#aof rewrite过程中,是否采取增量"文件同步"策略,默认为"yes",而且必须为yes
aof-rewrite-incremental-fsync yes

tcp-keepalive属于redis优化内容,如果有兴趣的话可以看看这篇博客写的很好https://ylgrgyq.github.io/2017/05/18/tcp-backlog/

清理策略

当Redis内存使用达到maxmemory时,需要选择设置好的maxmemory-policy进行对老数据的置换。
下面是可以选择的置换策略:

  • noeviction: 不进行置换,表示即使内存达到上限也不进行置换,所有能引起内存增加的命令都会返回error
  • allkeys-lru: 优先删除掉最近最不经常使用的key,用以保存新数据
  • volatile-lru: 只从设置失效(expire set)的key中选择最近最不经常使用的key进行删除,用以保存新数据
  • allkeys-random: 随机从all-keys中选择一些key进行删除,用以保存新数据
  • volatile-random: 只从设置失效(expire set)的key中,选择一些key进行删除,用以保存新数据
  • volatile-ttl: 只从设置失效(expire set)的key中,选出存活时间(TTL)最短的key进行删除,用以保存新数据
原文地址:https://www.cnblogs.com/Cherry-Linux/p/7640906.html