Day19- Redis2 | 青训营笔记

41 阅读1分钟

“这是我参与「第五届青训营 」伴学笔记创作活动的第 19 天”

3 Redis使用注意事项

3.1 大Key、热Key

3.1.1 大Key

1、大Key的定义

image.png

2、大Key的危害

  • 1)读取成本高;
  • 2)容易导致慢查询(过期、删除);
  • 3)主从赋值异常、服务阻塞,无法正常响应请求;

image.png

3、消除大Key的方法

  • 1)拆分;
  • 2)压缩;(首先考虑),需要注意消耗的解压缩的时间,读取多的话,重点考虑解压缩时间;
  • messagepack压缩,主要思想,一个int表示250只占一个字节,去掉多余的3个字节;

image.png

  • 3)集合类结构hash、list、set;

image.png

3.1.2 热Key

1、热Key的定义

image.png

2、解决热Key的方法

  • 1)设置Localache,使用本机内存,不访问redis;

image.png

  • 2)拆分
  • 代价:更新时,需要更新多个key,存在数据短暂不一致的风险;

image.png

3、字节跳动的redis代理,结合热key发现、localCache两个功能

  • 字节跳动的Redis访问代理;

image.png

3.2 慢查询场景

  • 容易导致redis慢查询的操作
  • 1)批量操作一次性传入过多Key-value;建议单批次不超过100;
  • 2)zset大部分命令o(logn),大小超过5K,也会导致慢查询;
  • 3)操作单个value过大,超过10KB;
  • 4)对大key删除会导致慢查询;

image.png

3.3 缓存穿透、缓存雪崩

缓存穿透:热点数据查询绕过缓存,直接查询数据库 缓存雪崩:大量缓存同时过期

image.png

缓存穿透---解决方法

  • 1)缓存空值;
  • 2)布隆过滤器;

image.png

缓存雪崩---解决方法

  • 1)缓存空值;
  • 2)使用缓存集群,避免单机宕机造成的缓存雪崩;

image.png