zoukankan      html  css  js  c++  java
  • 缓存雪崩,缓存穿透解决方案

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

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

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

    主流缓存框架:

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

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

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

  • 相关阅读:
    WARNING OGG-00706 Failed to add supplemental log group on table
    Lucene&Solr框架之第一篇
    SSM框架整合之练习篇
    SpringMVC框架之第四篇
    SpringMVC框架之第三篇
    SpringMVC框架之第二篇
    SpringMVC框架之第一篇
    MyBatis框架之第三篇
    MyBatis框架之第二篇
    maven仓库之第二篇
  • 原文地址:https://www.cnblogs.com/dgsh/p/6560585.html
Copyright © 2011-2022 走看看