对缓存redis组件的一些思考


对缓存redis组件的一些思考

缓存的作用,主要是解决查询数据速度慢的性能问题。比如经过代码优化,数据库优化之后,页面查询依然存在性能瓶颈问题,为了提高用户的体验,提升页面的响应时间,那就采用其它方案来解决吧,数据库采用读写分离?加个缓存?消息队列等等等吧都可以,不过自己想谈谈利用缓存来解决这个问题,对于缓存的使用方面,自己熟知的也就redis这个组件了,有些组件我仅仅听说过却没有用过,不过没关系,用到再去了解它吧,今天就谈谈面对和使用缓存时,自己对缓存相关的概念和解决方案的一点思考,其实缓存被人熟知需要面对的问题有缓存穿透,缓存雪崩,缓存击穿等概念。

那么自己就暂时讨论一下这三种问题的解决方案吧,缓存穿透的解决方案可以使用参数检验器提前检验,也可以利用布隆过滤器解决,不过使用布隆过滤器会存在"误伤"的情况,至于布隆过滤器如何实现的,可以自行查阅文档,只言片语不足以讨论这么高大上的问题。缓存雪崩的解决方案可以在原有设定过期时间的基础上加一个随机的时间。缓存击穿的解决方案可以采用互斥锁进行解决,不过这也仅仅是一个方案而已。

组件的引入是一把双刃剑,性能有所提升,必然会在其它方面消耗人的精力,如组件的引入一定会考虑高可用这个特点的,单点故障总不至于吧,集群的搭建需要人手,至少熟知常见的问题和解决方式,不然问题出现了,吭哧吭哧恐怕也会内心受挫。

对于缓存的分类,个人觉得缓存有本地缓存,分布式缓存等,至于其它的仅仅了解一些名词而已,所以这里就不讨论其它的了。这是关于缓存的一点点思考和理解,有误之处,需要改正,请赐教。