站长网ppt模板下载,湖北建设科技中心网站首页,专业做高品质的代工网站,国内免费空间可以做什么网站【Redis】Redis常见面试题#xff08;2#xff09; 文章目录 【Redis】Redis常见面试题#xff08;2#xff09;1. 缓存2. Redis作为缓存2.1 缓存雪崩2.2 缓存穿透2.3 缓存击穿2.4 缓存雪崩、缓存穿透、缓存击穿的区别2.5 缓存预热2.6 如何保证缓存和MySQL双写一致 【Redis… 【Redis】Redis常见面试题2 文章目录 【Redis】Redis常见面试题21. 缓存2. Redis作为缓存2.1 缓存雪崩2.2 缓存穿透2.3 缓存击穿2.4 缓存雪崩、缓存穿透、缓存击穿的区别2.5 缓存预热2.6 如何保证缓存和MySQL双写一致 【Redis】Redis常见面试题2
1. 缓存
缓存在计算机系统中有着重要的作用它可以显著提高系统的性能和响应速度
提升系统性能 缓存将常用的数据或计算结果存储在高速的存储介质中如内存以便快速地响应请求。通过减少对慢速存储介质如硬盘或数据库的访问次数可以降低响应延迟提高系统的吞吐量和效率减轻后端压力 通过缓存系统可以减少对后端资源的频繁访问降低数据库或其他外部服务的负载。这样可以节省计算资源提高系统的可扩展性和稳定性改善用户体验 缓存能够加速应用程序的响应速度从而提供更好的用户体验。用户可以更快地获取所需的数据或结果减少等待时间提高用户满意度
就以我们的大脑为例 5的阶乘是120一般不需要一直拆成5*4*3*2*1去算而是直接答120因为我们大脑吧5的阶乘是120保存到“缓存”了 再比如你是个数学白痴四道选择题一道不会但是你在测试之前看到了答案答案是ABCD你记住了放在“缓存”里测试的时候你直接写答案四道选择题满分下次遇到同样的四道选择题题目和选项一模一样一些你还记得答案但是一些忘记了“忘记了”也就是“缓存的过期”
2. Redis作为缓存
由于Redis高性能多种数据结构持久化支持的特性再加上天生支持分布式作为分布式机的缓存担得起这个责任~
下面是Redis作为缓存常见的一些知识点
2.1 缓存雪崩
缓存雪崩是指在短时间内由大量缓存同时过期导致大量的请求直接访问查询数据库而不是缓存从而对数据库造成巨大的压力严重的情况下可能会导致数据库宕机
缓存的存在减少了请求访问查询数据库的频率提高效率减低数据库压力过期后“没人兜底了”
正常情况下 缓存雪崩 解决 加锁排队缺点就是增加系统的响应时间降低系统吞吐量牺牲一点用户体验 随机化过期时间极大避免了同时过期这个事件的发生系统常用的方式甚至可以不设置过期时间但对硬件要求高 设计二级缓存Redis这一层防线沦陷后二级缓存挺身而出
2.2 缓存穿透
缓存穿透指的是查询数据库和缓存都没有数据因为数据库查询无数据出于容错考虑不会将结果保存到缓存中因此每次请求都会去查询数据库这种情况就叫做缓存穿透
可以理解为每次都无视缓存缓存一直没被存数据缓存没有其作用 2.3 缓存击穿
缓存击穿指的是某个热点缓存在某一时刻恰好失效了然后此时刚好有大量的并发请求此时这些请求将会给数据库造成巨大的压力
就像被击穿了个洞一个缺口“流量大水压高”形成一道强硬的“水刀”刺向数据库而缓存雪崩则是水坝直接塌了涌了下来
相比于缓存穿透击穿的严重程度显然更高 解决方案
加锁排队设置永不过期既然是热点缓存它配永不过期
2.4 缓存雪崩、缓存穿透、缓存击穿的区别 缓存穿透是因为一直没有缓存数据导致的问题 缓存击穿是因为某个热点缓存失效而导致的问题 缓存血本是因为同时又大量的缓存失效所带来的问题
2.5 缓存预热
是一个优化手段就是应用程序启动或缓存失效之后主动将热点数据加载到缓存中的策略
这样在实际请求到达应用程序时热点数据已经存在于缓存中从而减少了缓存未命中的情况提高了应用程序的响应速度
2.6 如何保证缓存和MySQL双写一致
可以采用以下几种方法
读取优先 在读取数据时优先从Redis缓存中读取如果缓存中不存在则从MySQL数据库读取并将数据写入Redis缓存。这样可以确保读取到的数据都是最新的避免缓存中的脏数据 更新同步 在更新数据时先更新MySQL数据库然后再更新Redis缓存。这样可以避免数据库和缓存中的数据不一致 使用队列 通过将更新操作写入队列中然后异步地从队列中获取操作并依次执行更新操作先更新MySQL数据库然后再更新Redis缓存。这样可以保证更新操作的顺序一致性并减少数据库和缓存的并发写入冲突 使用事务 在支持事务的数据库中可以使用数据库事务来同时更新MySQL和Redis。当更新MySQL数据库时在同一个事务中也更新Redis缓存。如果更新Redis缓存失败可以回滚数据库事务确保数据的一致性。 定时刷新 设置一个定时任务在一定时间间隔内将MySQL数据库中的数据同步到Redis缓存中保持数据的一致性。可以根据业务需求设置合适的刷新时间间隔
需要注意的是以上方法会增加系统的复杂性和延迟
因此需要根据具体的业务场景和性能要求做出权衡和选择另外使用缓存和数据库作为双写一致性解决方案时也需要考虑缓存和数据库的高可用性和容错机制以确保整个系统的可靠性 文章到此结束谢谢观看 可以叫我 小马我可能写的不好或者有错误但是一起加油鸭