Redis缓存穿透和雪崩等问题


1.Redis除了5大数据类型,还扩展了一些类型,方便我们在平时时使用;

  Pipeline:操作是非原子操作,提高性能。

  GEO:本质是zset,可以计算经纬度之间的距离。

  hyperLogLog:用来做基数统计的算法。

  bitmaps:通过修改key的二进制来修改key的值。(可以使用这个功能来使用Redis实现一个布隆过滤器)

2.缓存穿透问题:

  缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且出于容错考虑, 如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。

  解决方案:1.缓存空对象,并增加过期时间。

           2.使用布隆过滤器,排除掉一定不存在的数据。(不过通过布隆过滤器的,不一定是存在的,因为有可能是其他值的hash值,所以有一定的误差率,可以通过增加数组的长度来提升容错率)