缓存雪崩,缓存穿透解决方案

问题1-  雪崩(缓存击穿):缓存的数据量非常大,缓存服务器不持久化。在高并发的情况下海量用户请求涌入,这时缓存失效,海量用户请求就去请求数据库,数据库承受不了,造成数据库宕机,重启后海量请求并未消失,继续涌入,继续造成数据库服务器宕机。永远起不来。这种情况就叫雪崩。

解决雪崩问题:让缓存的数据定时的写磁盘,当缓存服务器意外停止,重启,当海量请求过来时,重启缓存服务器,如果本地有缓存文件,直接从文件中读取。放在内存中。redis是c语言写的,而且放入磁盘的内容的结构和内存中的结构一致。所以读取非常快。即使有部分的请求在恢复过程中访问到数据库,因为数量非常少,数据库还是能承受的。缓存恢复后,其他的大量的海量的请求就都被拦截了,这样就可以保证数据库不受威胁。

 

 

问题2- 缓存有多种,为什么选择redis?

主流缓存框架:

1)ehcache,框架底层喜欢用这个spring 、 hibernate 、mybatis(二级缓存)

2)memCache分布式缓存框架,百万级别,但是存在一个最重要的缺点-不落地,重启服务器内存中的数据就没有了。数据类型:字符串,多线程。

3)redis多个随时落地。数据持久化。提供“丰富”数据类型:string/list/hash/set/oset(排序)多线程和多时例。内存数据库。

posted @ 2017-03-16 17:18  码农兜兜  阅读(1293)  评论(0编辑  收藏  举报