Redis相关总结
一、Redis常用的基本类型
- String类型(字符串);
- Hash(哈希)类似Java中Map;
- List(列表);
- Set(无序不重复集合);
- Sorted Set (有序不重复集合);
二、Redis缓存的三大问题
- 缓存穿透
1)含义:查询一条redis和数据库中都没有的数据,当有人恶意攻击或者频繁利用这一点会导致数据库直接瘫痪。
2)应对方案:
i:缓存空对象
用查询的key作为redis中key缓存(key,value),并设置有效时间,但此种情况有弊端,会导致redis可能出现大量空对象值,并且key值如果更换也就不起作用了。
ii:使用布隆过滤器
这里对布隆过滤率不做描述,这种虽然效率很高,但是会存在误判,并且还需要定期维护。 - 缓存击穿
1)含义:查询一条redis中没有,但是数据库存在的数据。
2)应对方案:
在第一次查询数据库时使用分布式锁,把查询key值作为锁,查询结束释放锁。 - 缓存雪崩
1)含义:由于设置redis过期时间在某一段时间失效,导致有大量的数据库查询请求,甚至导致数据库宕机。
2)应对方案:
i.错开reids设置时间有效期,不要太过于集中.
ii.搭建高可用redis集群.
iii.对其进行熔断降级.