Contents

Redis实操记录

redis架构

目的: 针对不同的业务特性,选择合适的架构.

单机模式

一台redis节点,适合本地使用.

若机器挂了则无解.

主从模式

一台写节点,多台从节点,适合多读少写场景.

若写压力上来,则无解.

哨兵模式

写节点自动转移,满足高可用.适合多读少写场景.

若写压力上来,则有瓶颈.写节点挂了会转移,写节点会故障一段时间. 若不彻底解决写压力,无法根治问题.

集群模式

属于分布式架构,可以堆机器解决写压力.

redis连接数

目的: 提高应用性能,避免频繁的创建和销毁连接.

使用redis连接池.

需要埋点redis连接池的命中率.

空闲连接持续为空,则明显连接数不够用需要提升.

根据业务压测,确定redis连接数的合理范围.

关闭连接

当应用关闭时,记得close连接.

redis缓存策略

获取redis缓存策略

config get maxmemory-policy

默认是noeviction

LRU与LFU算法

  • Least Recently Used :最近最少使用
  • Least Frequently Used : 最近最不常用

阿里云的redis策略是选择volatile-lru

redis.conf

maxmemory-policy volatile-lru

查询redis的热点key

lfu算法下可使用redis-cli --hotkeys,查询redis的热点key.

线上排查

查找大key

redis-cli --bigkeys

设置慢日志

# 慢日志长度
CONFIG GET slowlog-max-len
# 设置 慢日志长度
CONFIG SET slowlog-max-len 128

设置慢日志时间

# 单位时间为微妙
CONFIG SET slowlog-log-slower-than 10000 

获取慢日志

# 获取5个数量
SLOWLOG get 5
# 过滤获取get操作相关的慢查询
redis-cli  SLOWLOG get 128 |grep  -A2 -B2  get

生产优化

多线程模式

多线程模式,可利用多核CPU

# 开启多线程模式 具体数字查询官网建议
io-threads 3

压测

redis-benchmark -d 128 -c 200 -n 1000000 -t set -q --threads 2

生产配置详解

https://xie.infoq.cn/article/906db4e8327990c309fc7554f

调试模式

开放远程连接

# 允许其他主机连接
protected-mode no
#
bind 0.0.0.0

开启dump.db

# 进行快照保存
save 900 1
save 300 10
save 60 10000
# 数据存放路径
dir ./