美文网首页Redis相关
redis常用配置参数

redis常用配置参数

作者: Oliver_Li | 来源:发表于2021-01-30 12:44 被阅读0次

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 机制删除。

相关文章

网友评论

    本文标题:redis常用配置参数

    本文链接:https://www.haomeiwen.com/subject/avnhtltx.html