零、背景
鉴于目前 Redis 使用广泛
虽然数据结构、API 比较简单
但是想使用好,还是有一定难度
建议了解下《Redis 开发与运维》
以达到知其然且知其所以然的境界
一、使用场景
大规模互联网在线应用
流量比较大,响应时间要求高
Redis 作为一款流行的高性能数据库
对于读多写少的场景,一般作为缓存使用
某大型电商订单系统读写比大概在 10:1
并且订单读取 90% 的流量都是创建订单当天查询
对于可容忍丢数据,但是对性能有极致要求,
比如优惠券发放,流量高,这种情况下当做 DB 用也挺好。
二、问题与建议
2.1 常见问题
- 网络抖动导致 redis 操作失败
- 定时任务清理过期 key 导致 IOPS 高
- redis 做了二次开发,更激进的惰性删除( 针对大面积过期场景 )
- 热 key 导致流量倾斜
- 考虑 Server 端旁路监听,做统计,然后推送到客户端做内存缓存
- 京东有开源热 Key 方案
- redis slot 分配不均匀,导致某节点提前内存告警
- 建议分配内存按 slot 分配,而不是节点
2.2 建议
- 缓存时间动态可配