Redis缓存穿透和雪崩等问题
1.Redis除了5大数据类型,还扩展了一些类型,方便我们在平时时使用;
Pipeline:操作是非原子操作,提高性能。
GEO:本质是zset,可以计算经纬度之间的距离。
hyperLogLog:用来做基数统计的算法。
bitmaps:通过修改key的二进制来修改key的值。(可以使用这个功能来使用Redis实现一个布隆过滤器)
2.缓存穿透问题:
缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且出于容错考虑, 如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。
解决方案:1.缓存空对象,并增加过期时间。
2.使用布隆过滤器,排除掉一定不存在的数据。(不过通过布隆过滤器的,不一定是存在的,因为有可能是其他值的hash值,所以有一定的误差率,可以通过增加数组的长度来提升容错率)