Redis实操记录
Contents
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 ./