缓存技术常见问题 && Redis缓存并发问题

 

Redis常见的问题有  雪崩、穿透和击穿

 

Redis的作用:访问量多但数据变化少,热点数据;session缓存数据;

 

Redis缓存雪崩:高并发请求时,一旦Redis缓存库发生崩溃,则大量的请求就会转向SQL数据库的访问,这个时候数据库一下子就会发生高负载蹦死。

 

Redis雪崩解决方案:ehcache缓存 + Redis + 限流组件

缓存技术常见问题 && Redis缓存并发问题

缓存穿透

缓存穿透:数据库中的数据没有数据,缓存中不记录保存,这时请求发向数据库中,有可能把数据库打死。

解决方案:请求时,数据库中查无数据,将空数据设定自定义标志词记录在Redis缓存中。这样会有效避免问题。

 

缓存击穿

缓存击穿就是当具体某点Key失效时发生的SQL数据库打死

 

Redis缓存并发问题

问题场景:用户更新数据库,在并发写入Redis缓存时(由于Redis是单线程,并发是发生在程序中),本来先到的数据却后到了,导致Redis缓存最新数据是后到的数据,造成脏读。

解决方案:方案原理  有类似SQL的乐观锁机制  。解决途径是  在并发写入Redis缓存时,用要写入数据的版本号和时间戳 与 Redis中的数据进行对比,如果写入的数据时间戳或者版本号 比Redis 高,则写入Redis中;否则就不写入。

 

Redis优点

纯内存操作,效率较高。还能集群。