dananhai 2020-03-05
Redis配置文件解析网上都有,这里不赘述了。提供一些值得修改的参数,标注红色的参数尤其需要注意,不然容易出现主从全量同步死循环
NETWORK bind 127.0.0.1 默认是bind 127.0.0.1,注释掉 protected-mode no 默认protected-mode yes,改为no port 6379 建议修改掉,避免使用默认端口 tcp-backlog 511 建议调大至2048并同时调大Linux内核参数 /proc/sys/net/core/somaxconn 至2048
GENERAL logfile "" 建议修改日志的路径
SNAPSHOTTING save 900 1 save 300 10 save 60 10000 注释掉这三行触发式rdb持久化,高并发情况下开启触发式持久化容易一直做save操作 dbfilename dump.rdb 根据实际情况修改,建议修改为dump+端口.rdb dir ./ 根据实际情况修改 ,建议修改成和logfile,配置文件在同一个父目录下 如/app/redis/{conf,data,log}
REPLICATION replica-read-only yes 建议修改为no,当主节点故障时,可立即使用从节点。 repl-timeout 60 建议设置更久,避免高并发情况下大节点全量复制无法在60秒内完成 repl-backlog-size 1mb 建议设置为100mb+,避免全量复制生成rdb+传输rdb+加载rdb时,主节点的复制挤压缓冲区不够用导致一直在全量复制。
LAZY FREEING 惰性删除参数,开启配置项避免大key过期删除导致服务阻塞 lazyfree-lazy-eviction yes 驱逐策略惰性删除,建议开启 lazyfree-lazy-expire yes 过期key惰性删除,建议设置开启 lazyfree-lazy-server-del yes del操作惰性删除,建议开启 replica-lazy-flush yes flush惰性删除,建议开启
APPEND ONLY MODE appendonly yes 建议从节点开启 appendfilename "appendonly.aof" 根据实际端口修改,建议修改为appendonly+端口.aof appendfsync always 从节点建议修改为everysec,折中持久化策略,每秒持久化一次到aof中。 auto-aof-rewrite-percentage 100 根据实际情况修改,避免在业务高峰aof文件刚好膨胀100%,触发自动aofrewrite操作,阻塞服务
ADVANCED CONFIG client-output-buffer-limit replica 0 0 0 建议关闭主从复制buffer限制,避免高并发情况下,slave无法在硬限制和软限制期间完成全量同步,造成主从同步死循环
ACTIVE DEFRAGMENTATION activedefrag no 建议关闭,避免在高峰段出现碎片回收。碎片率上升时,可在业务低峰时段开启。
知识点扩展:
如果认为Redis是一个key value存储, 可以使用它来代替MySQL;如果认为它是一个可以持久化的cache, 可能只是用它保存一些频繁访问的临时数据(代替Memcached);除此之外,还可以把Redis当做一个轻量级的消息队列使用,因为它内置就支持 list数据结构和PUB/SUB命令;还可以当做一个轻量级的分布式锁系统。Redis是REmote DIctionary Server的缩写,在Redis在官方网站的解释是:
Redis is an open source, advanced key-value store.
It is often referred to as a data structure server since keys
can contain strings, hashes, lists, sets and sorted sets.