缓存穿透:是指查询一个Redis和数据库中都不存在的数据。

问题:查询一个Redis和数据库中都不存在的数据,大量请求去访问数据库,导致数据库宕机。

解决办法:

1、根据id查询,如果id是自增的,将id的最大值放到Redis中,在查询数据库之前,直接比较一下id。

2、如果id不是整型,可以将全部的id放到set中,在用户查询之前,去set中查看一下是否有这个id。

3、获取客户端的ip地址,可以将ip的访问添加限制。

缓存击穿:是指查询一个Redis中没有但是数据库中存在的数据,并且这个数据是热点数据。

问题:查询一个Redis中没有但是数据库中存在的数据,并且这个数据是热点数据,大量请求访问数据库,导致数据库宕机。

解决办法:

1、在访问的数据缓存中没有的时候,添加互斥锁,让少数请求可以访问数据库,避免数据库宕机。

2、把热点数据的生存时间去掉(不推荐)

缓存雪崩

问题:当大量缓存数据同时到期,最终大量的请求去访问数据库,导致数据库宕机。

结局办法:将缓存中数据的生存时间设置为随机时间。

缓存倾斜:

问题:大量的热点数据集中在一个Redis节点上,Redis无法承受住大量请求,从而导致Redis宕机。

解决办法:

1、扩展主从架构,搭建大量从节点,环节Reidis压力

2、可以在Tomcat中做JVM缓存,在去Redis查询之前,先去Tomcat中查询,缓解Redis压力。

最新文章

  1. .net 实现Office文件预览 Word PPT Excel 2015-01-23 08:47 63人阅读 评论(0) 收藏
  2. [译]:Orchard入门——Orchard控制面板概览
  3. 论APP测试中黑盒测试方案的重要性?
  4. js 面试题
  5. 成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响
  6. android开发之国际化
  7. HDU 5723 Abandoned country
  8. python网络爬虫之scrapy 工程创建以及原理介绍
  9. Java设计模式(四)Builder建造者模式
  10. 查看当前APP打开的是哪个Activity
  11. How to set asp.net Identity cookies expires time
  12. 设计模式原则(4)--Interface Segregation Principle(ISP)--接口隔离原则
  13. ACTGame项目
  14. 【大数据之数据仓库】kudu性能测试报告分析
  15. 【RF库Collections测试】Dictionary Should Not Contain Value
  16. spring mvc $.ajax没有指定contentType ,导致后台无法接收到数据
  17. K近邻python
  18. MATLAN中矩阵表示中有一维是~表示的意思
  19. 守护客户数据价值:企业级NewSQL HTAP分布式云TBase架构详解
  20. MySQL中事务的概述ACID了解

热门文章

  1. 机器学习算法之Kmeans算法(K均值算法)
  2. FunnyXEN
  3. PTA 1014 Waiting in Line (30分) 解题思路及满分代码
  4. Codeforces Round #345 (Div. 1) C. Table Compression (并查集)
  5. Educational Codeforces Round 89 (Rated for Div. 2) C Palindromic Paths
  6. 线段树扫描线(一、Atlantis HDU - 1542(覆盖面积) 二、覆盖的面积 HDU - 1255(重叠两次的面积))
  7. Codeforces Round #646 (Div. 2) C. Game On Leaves (贪心,博弈)
  8. Linux ulimit使用
  9. Mac下anaconda的安装和基本使用
  10. Linux-关于Bash