redis笔记
《redis开发与运维》笔记
- 用
info
命令查看详细信息 - 获取慢查询命令
slowlog get [n]
,n为取出来的条数。在配置文件中有两个关键参数,一个是slowlog-slower-than
和slowlog-max-len
(慢日志最大的数量) - 每隔一秒显示redis的内存使用量 并重复5次:
redis-cli -r 5 -i 1 info | grep used_memory_human
-save
命令会阻塞主线程的运行,建议使用basave
RDB
和AOF
持久化:
AOF默认是关闭的。
RDB的优点:1)是个紧凑的二进制文件,代表在redis在某个时间点的快照,适用于备份,全量复制等场景。2)加载速度远快于AOF方式。
缺点:1)由于开销较大,没办法做到实时持久化/秒级持久化 2)由于redis历史版本问题,导致老的redis服务不兼容新的RDB版本AOF适用于秒级持久化。
- redis属于CPU密集型操作,不要和其他CPU密集型服务放在一起,造成CPU过度竞争。
- AOF重写时会消耗大量的硬盘IO,当开启AOF功能的redis用于高流量场景时,如果使用普通机械硬盘,写入吞吐量在100M/S,此时的实例瓶颈主要在同步硬盘上。单机配置多个redis实例(充分利用CPU的多核)时,可以配置不同的实例分盘存储AOF文件,分摊硬盘写入压力。
- 开启AOF持久化,使用的同步硬盘策略是
everysec
,用于平衡性能和安全性,AOF同步最多允许两秒的延迟。 - 持久化阻塞主线程场景有:fork阻塞和AOF追加阻塞
-单机下部署多个实例时,为了防止出现多个子进程执行重写操作,建议做隔离控制,避免CPU和IO资源竞争,要保证每个实例的AOF串行化执行。
- 可以用
client list
查看相关的从服务器信息 - 开发时在使用额外的节点做读写分离之前,尽可能的先在主节点上做优化,比如解决慢查询,持久化阻塞等,也可以考虑使用redis cluster等分布式解决方案。
- 在主从配置中,关于内存的配置一定要一样。
- 需要规避全量复制和复制风暴,对于复制风暴,可以减少主节点下挂在从节点数量,或采用树状复制结构,加入中间层节点来保护主节点。