开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
Redis缺点
- 不知道你有没有想过,redis作为缓存和数据库抗衡,那么它到底能不能抗揍呢,如果它突然挂了会不会对我们产生很大的影响呢? 如果它挂了数据岂不是丢失了吗,这样会不会得不偿失。
- 针对上面两个问题,我们分别来解答下。
(1)如果redis挂了,或者没有链接,怎么办??
解决方法:
1)数据库有读写分离备份,那么redis也有主从配置,基于配置哨兵模式实现数据节点实时检测,保证集群不停机工作,主节点通过烧饼监听并通过集群选择备主机。
2)还有一种情况就属于是擦屁股了,那就是通过加强数据库的性能来解决redis挂了临时穿透过来的请求压力。这有点感觉像产品不给力最后只能开发去曲线救国来解决问题
(2)穿透缓存
- 顾名思义就是缓存里没有数据,然后请求就会最终走到数据哪里,一个两个无所谓,但是请求量特别的大的情况,那就不好说了。这样的话缓存就是一个花瓶,中看不中用毫无用处,对于这种场景我们可以完善我们的缓存逻辑,一个key请求很频繁,但是却一直不在redis中缓存起来,这肯定就是我们程序员开发的时候没有考虑将他的信息缓存起来。
解决方法:从数据库中查询,如果数据库没有,则返回值为Null,如果不空的话我们就需要根据实体数据生成redis key , 将用户定义的字段保存到Redis中,使用key,value方法,jedis。 setex(key,"empty"),最后每个key都设置过期时间,然后我们在get 每个key 就可以获取到值了。
总结
- 缓存穿透主要是我们的场景发生偏移导致,这种情况我们最好是根据新的场景重新构建我们的缓存架构来减轻我们的额数据库的压力