“这是我参与「第五届青训营 」伴学笔记创作活动的第 19 天”
3 Redis使用注意事项
3.1 大Key、热Key
3.1.1 大Key
1、大Key的定义
2、大Key的危害
- 1)读取成本高;
- 2)容易导致慢查询(过期、删除);
- 3)主从赋值异常、服务阻塞,无法正常响应请求;
3、消除大Key的方法
- 1)拆分;
- 2)压缩;(首先考虑),需要注意消耗的解压缩的时间,读取多的话,重点考虑解压缩时间;
- messagepack压缩,主要思想,一个int表示250只占一个字节,去掉多余的3个字节;
- 3)集合类结构hash、list、set;
3.1.2 热Key
1、热Key的定义
2、解决热Key的方法
- 1)设置Localache,使用本机内存,不访问redis;
- 2)拆分
- 代价:更新时,需要更新多个key,存在数据短暂不一致的风险;
3、字节跳动的redis代理,结合热key发现、localCache两个功能
- 字节跳动的Redis访问代理;
3.2 慢查询场景
- 容易导致redis慢查询的操作
- 1)批量操作一次性传入过多Key-value;建议单批次不超过100;
- 2)zset大部分命令o(logn),大小超过5K,也会导致慢查询;
- 3)操作单个value过大,超过10KB;
- 4)对大key删除会导致慢查询;
3.3 缓存穿透、缓存雪崩
缓存穿透:热点数据查询绕过缓存,直接查询数据库 缓存雪崩:大量缓存同时过期
缓存穿透---解决方法
- 1)缓存空值;
- 2)布隆过滤器;
缓存雪崩---解决方法
- 1)缓存空值;
- 2)使用缓存集群,避免单机宕机造成的缓存雪崩;