Redis缓存中的常见问题
2024-10-19 13:35:17
缓存穿透:是指查询一个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压力。
最新文章
- .net 实现Office文件预览 Word PPT Excel 2015-01-23 08:47 63人阅读 评论(0) 收藏
- [译]:Orchard入门——Orchard控制面板概览
- 论APP测试中黑盒测试方案的重要性?
- js 面试题
- 成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响
- android开发之国际化
- HDU 5723 Abandoned country
- python网络爬虫之scrapy 工程创建以及原理介绍
- Java设计模式(四)Builder建造者模式
- 查看当前APP打开的是哪个Activity
- How to set asp.net Identity cookies expires time
- 设计模式原则(4)--Interface Segregation Principle(ISP)--接口隔离原则
- ACTGame项目
- 【大数据之数据仓库】kudu性能测试报告分析
- 【RF库Collections测试】Dictionary Should Not Contain Value
- spring mvc $.ajax没有指定contentType ,导致后台无法接收到数据
- K近邻python
- MATLAN中矩阵表示中有一维是~表示的意思
- 守护客户数据价值:企业级NewSQL HTAP分布式云TBase架构详解
- MySQL中事务的概述ACID了解
热门文章
- 机器学习算法之Kmeans算法(K均值算法)
- FunnyXEN
- PTA 1014 Waiting in Line (30分) 解题思路及满分代码
- Codeforces Round #345 (Div. 1) C. Table Compression (并查集)
- Educational Codeforces Round 89 (Rated for Div. 2) C Palindromic Paths
- 线段树扫描线(一、Atlantis HDU - 1542(覆盖面积) 二、覆盖的面积 HDU - 1255(重叠两次的面积))
- Codeforces Round #646 (Div. 2) C. Game On Leaves (贪心,博弈)
- Linux ulimit使用
- Mac下anaconda的安装和基本使用
- Linux-关于Bash