1. 配置罗列
- bind(127.0.0.1):绑定网卡地址,可以绑0.0.0.0或网卡ip,另外redis没有类似白名单的功能只能通过防火墙设置,https://blog.csdn.net/cw_hello1/article/details/83444013
- port(6379):端口
- protected-mode(yes):如果没绑定网卡地址、没密码的情况下只能本机访问的保护措施
- tcp-backlog(511):TCP连接中已完成队列长度,和Linux somaxconn(默认128)类似,取min{tcp-backlog, somaxconn}
- timeout(0):timeout秒客户端没发请求就断开连接,默认0为关闭
- tcp-keepalive(300):健康检查周期秒(SO_KEEPALIVE)
- daemonize(no):是否守护进程(后台)启动
- pidfile:用于记录pid的文件路径
- loglevel(notice):debug、verbose、notice、warning(日志量由多到少)
- logfile:log文件地址
- databases(16):数据库数量
- save(m n):RDB的生成策略,每隔m秒触发n次修改则执行bgsave,详见RDB篇
- always-show-logo(yes):启动时是否显示redis图标
- maxmemory(1g):最大使用内存
- maxmemory-policy(noeviction):(见下文)
- stop-writes-on-bgsave-error(yes):如果无法生成RDB,就停止写入。主要是redis想提示用户磁盘或其他问题导致RDB异常了,否则可能一直不会发现出问题了。
- rdbcompression(yes):RDB是否压缩
- rdbchecksum(yes):RDB是否校验和
- dbfilename(dump.rdb):RDB文件名
- dir:指定快照文件的存放目录
- replica-serve-stale-data(yes):replica节点和master断开后是否继续处理请求。
- replica-read-only(yes):从节点只读。常见都是主写从读,主到从同步所以是yes。
- repl-diskless-sync(no):从节点同步是否选择socket传输RDB的方式,默认是存磁盘从节点取
- repl-diskless-sync-delay(5):socket同步方式下开启同步延迟的时间
- repl-disable-tcp-nodelay(no):主从节点连接的TCP是否启用Nagle算法
- replica-priority(100):从节点优先级,多个从节点选最小的优先晋升master
- lazyfree-lazy-eviction(no):(见下文)
- lazyfree-lazy-expire(no):(见下文)
- lazyfree-lazy-server-del(no):(见下文)
- replica-lazy-flush(no):(见下文)
- appendonly(no):是否开启AOF
- appendfilenam(appendonly.aof):AOF文件名
- appendfsync(everysec):AOF缓冲写磁盘策略,详见AOF篇
- no-appendfsync-on-rewrite(no):因为aof的always或everysec大量IO场景会导致写入延迟,所以在执行BGSAVE或BGREWRITEAOF时就暂停fsync(),把数据先存在缓冲区,默认关闭的
- auto-aof-rewrite-percentage(100):和上次重写进行比对,超过100%时重写。
- auto-aof-rewrite-min-size(64mb):aof文件重写最小的文件大小。
- aof-load-truncated(yes):是否允许不完整的AOF文件加载,不开启时需要手动补全
- aof-rewrite-incremental-fsync(yes):以每32m增量方式重写AOF
- rdb-save-incremental-fsync(yes):以每32m增量方式写RDB
- lua-time-limit(5000):Lua脚本最大执行时间
- slowlog-log-slower-than(10000):慢日志记录阈值,单位纳秒
- slowlog-max-len(128):慢日志记录最大长度
- latency-monitor-threshold(0):redis内存延迟监控间隔,默认不开启
- hash-max-ziplist-entries(512):详见对象篇,字典
- hash-max-ziplist-value(64):详见对象篇,字典
- list-max-ziplist-size(-2):详见对象篇,列表
- list-compress-depth(0):详见对象篇,列表
- set-max-intset-entries(512):详见跳跃表篇
- zset-max-ziplist-entries(128):详见跳跃表篇
- zset-max-ziplist-value(64):详见对象篇,有序集合
- stream-node-max-bytes(4096):stream暂时没接触
- stream-node-max-entries(100):stream暂时没接触
- activerehashing(yes):
- client-output-buffer-limit:强制断开速度不够快的客户端
- hz(10):serverCron定时函数每秒的执行次数,默认每秒10次
- dynamic-hz(yes):是否开启用于动态调整hz,Redis会根据CPU调整hz频率
- requirepass:登录密码
- masterauth:slave访问master时的密码
- cluster-config-file:集群配置文件名
- cluster-enabled:是否开启集群模式
- rename-command:禁止一些命令,如FLUSHALL、keys等
- maxclients:最大客户端数,超出后连接失败
1.1 maxmemory-policy(超出maxmemory后key的删除策略)
- volatile-lru(默认):设置了过期时间的key范围里,进行LRU。
- allkeys-lru : 全部数据里,进行LRU
- volatile-random:设置了过期时间的key范围里,随机删除
- allkeys-random:全部数据里,随机删除
- volatile-ttl :设置了过期时间的key范围里,按过期时间排序,删除即将过期的
- noeviction : 永不过期,返回报错
- allkeys-lfu:设置了过期时间的key范围里,进行LFU
- volatile-lfu:全部数据里,进行LFU
LRU:https://www.jianshu.com/p/ddbc70cfa126
LFU:https://www.jianshu.com/p/a9daa09df2b0 - 补充:
- LRU在Redis里并不会全部key按链表取最冷数据,而是在每个key放一个最近访问时间戳,删除时随机获取N个里最冷的数据。
- LFU也做了优化,在对象中记录使用次数,先随机选取N个进行排序删除,如果使用次数相同,根据LRU的时间进行排序然后清除。
1.2 lazyfree(摘抄)
针对big key删除时程序阻塞,提供子线程删除的方式,配置中lazyfree默认都是关闭的,前三个建议开启。
- lazyfree-lazy-eviction:表示当 Redis 运行内存超过 maxmeory 时,是否开启 lazy free 机制删除;
- lazyfree-lazy-expire:表示设置了过期时间的键值,当过期之后是否开启 lazy free 机制删除;
- lazyfree-lazy-server-del:有些指令在处理已存在的键时,会带有一个隐式的 del 键的操作,比如 rename 命令,当目标键已存在,Redis 会先删除目标键,如果这些目标键是一个 big key,就会造成阻塞删除的问题,此配置表示在这种场景中是否开启 lazy free 机制删除;
- slave-lazy-flush:针对 slave(从节点) 进行全量数据同步,slave 在加载 master 的 RDB 文件前,会运行 flushall 来清理自己的数据,它表示此时是否开启 lazy free 机制删除。
网友评论