早期做网站 如何推广,泰安房产网签数据汇总,南宁有做校园门户网站的吗,工程资料类网站怎么做在当今快节奏的数字世界中#xff0c;性能优化对于提供无缝的用户体验至关重要。缓存在提高应用程序性能方面发挥着至关重要的作用#xff0c;它通过将经常使用或处理的数据存储在临时高速存储中来减少数据库负载并缩短响应时间#xff0c;从而减少系统的延迟。Redis 是一种…在当今快节奏的数字世界中性能优化对于提供无缝的用户体验至关重要。缓存在提高应用程序性能方面发挥着至关重要的作用它通过将经常使用或处理的数据存储在临时高速存储中来减少数据库负载并缩短响应时间从而减少系统的延迟。Redis 是一种流行的内存数据存储它提供了强大的缓存解决方案可以显着提高应用程序的速度和效率。
在深入研究 Redis 缓存之前让我们先了解缓存的基础知识。缓存涉及将经常访问或计算成本高昂的数据存储在快速且易于访问的位置例如内存中以加快后续请求的速度。通过将数据存储在缓存中应用程序可以避免从速度较慢的数据源如数据库或外部 API获取数据的需要从而缩短响应时间并减少服务器负载。
Redis就像是一个超级快的小助手,站在数据库和应用程序之间可以类比CPU缓存内存: Redis把数据存在内存里,就像把常用的东西放在手边一样,取用起来超快。相比之下,数据库就像是要去仓库找东西,慢很多。 使用 Redis 缓存时请务必考虑以下内容
确定要缓存的正确数据并非所有数据都需要缓存。专注于缓存经常访问或生成计算成本高昂的数据。这包括不经常更改或可以在多个请求之间共享的数据。
设置过期策略为缓存的数据确定适当的过期策略。这可确保缓存保持最新状态并避免提供过时的数据。根据数据更新的频率和缓存数据所需的新鲜度设置过期时间。
实现缓存失效当基础数据发生变化时必须使相应的缓存条目失效或更新。这可以通过使用缓存失效触发器或监视数据源中的更改等技术来完成。
监控缓存性能定期监控缓存性能确保其有效性。密切关注缓存命中率、缓存未命中率和整体缓存利用率。监控可以帮助识别潜在的瓶颈或需要优化的领域。
针对高流量扩展 Redis随着应用程序流量的增长请考虑扩展 Redis 以处理增加的负载。这可能涉及使用 Redis 集群或复制在多个实例之间分配数据并提高读取和写入吞吐量。 缓存策略
a) 读取数据时:
应用程序先问Redis:嘿,你有这个数据吗?
b) 写入数据时:
如果Redis说有,应用程序就直接用了,省去了问数据库的时间。如果Redis说没有,应用程序就去数据库拿,然后告诉Redis:保存一下,下次可能用得着。应用程序更新数据库,然后告诉Redis:嘿,数据更新了,你也更新一下。 Redis的缓存策略主要涉及如何有效地管理缓存数据以及如何保持缓存与数据源的一致性。让我们通过几个主要的缓存策略来深入了解
1. Cache-Aside旁路缓存
想象Redis是一个效率极高的助手而数据库是一个大型档案室。
工作流程
读取数据应用先查Redis没有则去数据库取然后放入Redis。写入数据先更新数据库再删除Redis中的对应键。
比喻你想找一份文件。首先问助手Redis有没有如果没有你就去档案室数据库找找到后给助手一份副本。当你需要更新文件时先更新档案室的原件然后告诉助手丢掉手中的旧副本。
优点实现简单Redis挂掉不影响系统正常运行。保证数据一致性。
缺点第一次访问数据时会比较慢称为缓存穿透。
2. Read/Write Through读写穿透
想象Redis现在变成了一个聪明的管家所有的数据请求都必须经过他。
工作流程
读取数据应用只和Redis交互如果Redis没有数据Redis负责从数据库读取并缓存。写入数据应用把数据写入RedisRedis负责同步更新到数据库。
比喻你需要任何文件都告诉管家Redis。如果管家没有他会去档案室数据库取然后保存一份。当你要更新文件时你把新文件交给管家由他负责更新档案室。
优点对应用层透明应用不需要关心缓存的细节。数据一致性好。
缺点增加了Redis的复杂度。可能会带来一定的性能损失。
3. Write-Behind Caching异步写入
把Redis想象成一个能暂存数据的智能助理。
工作流程
读取数据与Read Through相同。写入数据数据写入Redis后立即返回Redis异步地将数据更新到数据库。
比喻你把所有更新的文件都交给助理Redis。助理先记录下来然后在空闲时统一更新到档案室数据库。
优点写操作性能高。可以合并多次写操作减少数据库压力。
缺点
数据丢失风险高Redis宕机可能导致未同步的数据丢失。
数据一致性较弱可能出现Redis和数据库数据不一致的情况。
4. 预加载策略
将Redis视为一个预习室。
工作流程在系统启动或者定时任务中主动将热点数据加载到Redis中。
比喻在开始工作前助理Redis主动去档案室数据库取出可能会用到的文件放在手边以备不时之需。
优点可以提前准备热点数据提高访问速度。减少缓存穿透的情况。
缺点需要提前预测热点数据如果预测不准确可能会浪费资源。
5. 多级缓存策略
将Redis作为多级缓存系统中的一环。
工作流程 构建本地缓存如应用服务器的内存 - Redis - 数据库的多级缓存架构。
比喻你的办公室有个小抽屉本地缓存办公室外有个文件柜Redis大楼里有个档案室数据库。你会先看抽屉然后是文件柜最后才去档案室。
优点进一步提高数据访问速度。减轻Redis的压力。
缺点增加了系统复杂度。多级缓存一致性维护变得更加困难。
选择哪种缓存策略取决于你的具体需求如对数据一致性的要求、系统的读写比例、性能需求等。在实际应用中常常会综合使用多种策略来达到最佳效果。
redis把登入的数据都登录在了缓存内存中避免了浪费时间的IO操作但是随着数据量的增加redis存储的数据也会越来越多所以接下来引入了过期策略 过期策略
设置过期策略为缓存的数据确定适当的过期策略。这可确保缓存保持最新状态并避免提供过时的数据。根据数据更新的频率和缓存数据所需的新鲜度设置过期时间。
Redis不会永远保存所有数据,它会给数据设置保质期。
就像冰箱里的食物,过期了就自动扔掉。这样可以保证Redis里always存着新鲜的数据。
Redis 主要使用三种策略来管理过期的键定时删除、惰性删除和内存淘汰。让我们用简单的比喻来理解这些概念。
1. 定时删除主动删除
想象 Redis 是一个图书管理员而键就是借出去的书。
工作原理Redis 会为每个设置了过期时间的键都创建一个定时器一旦到期就立即删除。比喻图书管理员给每本借出去的书都设置了一个闹钟。闹钟一响他就立即去找到这本书并将其下架。优点内存友好过期键能被及时删除。缺点CPU 不友好可能会占用大量 CPU 时间去处理过期键。
实际上Redis 用的是一种折中的策略每秒进行 10 次过期键的检查每次随机检查一些设置了过期时间的键删除其中已过期的。
2. 惰性删除被动删除
想象 Redis 现在变成了一个懒惰的图书管理员。
工作原理Redis 不主动删除过期键只有当你尝试访问一个键的时候才会检查它是否过期如果过期了就删除。比喻图书管理员不主动检查书的借阅期。只有当有人来借书时他才会检查这本书是否已经过期如果过期了就将其下架。优点CPU 友好不会浪费 CPU 时间去检查未被使用的过期键。缺点内存不友好过期的键可能会在很长一段时间内占用内存。
3. 内存淘汰内存不足时的被动删除
想象 Redis 是一个书架空间有限的图书馆管理员。
工作原理当 Redis 的内存不足以容纳新的数据时会根据选定的淘汰策略来删除一些键为新数据腾出空间。比喻当书架快满时图书管理员会根据某种规则比如最少使用、最近最少使用等来决定哪些书要被移除以便放入新书。
Redis 提供了几种内存淘汰策略
a) noeviction不淘汰任何数据当内存不足时直接报错。
比喻书架满了就不再接受新书并告诉借书人对不起没位置了。
b) allkeys-lru从所有键中驱逐使用频率最少的键。
比喻移除最长时间没人看过的书。
c) volatile-lru从设置了过期时间的键中驱逐使用频率最少的键。
比喻只在有借阅期限的书中移除最长时间没人看过的书。
d) allkeys-random随机驱逐键。
比喻随机选择书本移除。
e) volatile-random从设置了过期时间的键中随机驱逐。
比喻在有借阅期限的书中随机选择移除。
f) volatile-ttl驱逐快要过期的键。
比喻优先移除快到借阅期限的书。
g) volatile-lfu 和 allkeys-lfuRedis 4.0 新增驱逐使用频率最低的键。
比喻移除借阅次数最少的书。
实际应用中Redis 会综合使用这些策略。定时删除和惰性删除是主要的过期键处理方式而内存淘汰策略则是在内存紧张时的一种补充措施。选择合适的策略需要根据实际应用场景和需求来权衡。 缓存问题及它们的解决方案
1. 缓存击穿Cache Penetration 概念 缓存击穿指的是对于一个特定的高频热点key在缓存过期的一刻同时有大量的请求到达这些请求同时发现缓存过期于是同时去数据库中查询数据导致数据库瞬间压力剧增。
比喻 想象一个热门商品在电商平台上的缓存刚好过期而此时正值促销高峰大量用户同时刷新页面导致所有请求都直接冲向数据库。
解决方案
a) 互斥锁Mutex Key - 原理第一个请求获取锁并从数据库加载数据其他请求等待。 - 实现使用Redis的SetNX命令成功设置则获取锁。 - 优点简单有效保证只有一个请求会穿透到数据库。 - 缺点可能会造成某些请求的等待时间较长。
b) 设置热点数据永不过期 - 原理对于某些特别热点的数据设置一个较长的过期时间或干脃不设置过期时间。 - 实现定期异步更新这些热点数据。 - 优点能有效防止缓存击穿。 - 缺点维护成本较高需要额外的更新机制。
c) 提前更新缓存 - 原理在缓存即将过期前异步更新缓存。 - 实现设置一个缓存刷新线程检测即将过期的key并提前更新。 - 优点能有效避免缓存过期瞬间的压力。 - 缺点实现相对复杂需要额外的系统资源。
2. 缓存雪崩Cache Avalanche 概念 缓存雪崩指的是大量缓存数据在同一时间集中过期或者缓存服务器宕机导致大量请求直接落到数据库上引起数据库压力骤增可能导致整个系统崩溃。
比喻 想象一场大型促销活动结束所有商品的缓存同时失效或者Redis服务器突然宕机导致所有的请求如雪崩般冲向数据库。
解决方案
a) 均匀分布过期时间 - 原理在设置缓存过期时间时加入一个随机值避免大量缓存同时过期。 - 实现过期时间 基础过期时间 random(0, 300秒) - 优点简单有效易于实现。 - 缺点可能会稍微增加缓存不一致的概率。
b) 构建高可用的缓存集群 - 原理使用Redis Cluster或者哨兵模式确保缓存系统的高可用性。 - 实现配置主从复制并使用哨兵监控和自动故障转移。 - 优点大大提高系统的可用性和稳定性。 - 缺点增加了系统复杂度和维护成本。
c) 设置多级缓存 - 原理在Redis之上再增加一层本地缓存如Guava Cache。 - 实现请求首先访问本地缓存miss后再访问Redis。 - 优点即使Redis完全不可用系统仍能提供部分服务。 - 缺点增加了系统复杂度且可能带来数据一致性问题。
d) 熔断降级机制 - 原理当检测到缓存服务不可用时暂时屏蔽部分非核心功能只提供最基本的服务。 - 实现使用类似Hystrix这样的熔断框架。 - 优点能够保护系统核心功能防止整体崩溃。 - 缺点会暂时降低用户体验。
e) 预加载热点数据 - 原理系统启动时或者定时任务中提前加载热点数据到缓存。 - 实现编写脚本或定时任务定期刷新热点数据的缓存。 - 优点可以有效减少缓存雪崩的影响范围。 - 缺点需要额外的维护成本且可能会占用更多的缓存空间。
在实际应用中通常会综合使用多种策略来防范缓存击穿和缓存雪崩。选择哪种方案或组合要根据具体的业务场景、系统架构和性能需求来决定。同时良好的监控和告警机制也是必不可少的可以帮助我们及时发现并解决问题。
3. 缓存失效 Cache Invalidation
1. 避免缓存失效
a) 定时刷新策略
原理定期更新缓存中的数据不依赖于单个数据变更。优点简单可靠适合变更频率较低的数据。缺点可能存在短暂的数据不一致。
b) 基于消息队列的实时更新
原理数据变更时发送消息专门的服务消费消息并更新缓存。优点实时性高系统解耦。缺点需要额外的消息中间件增加系统复杂度。
c) 双写一致性Write-Behind
原理更新数据时同时更新缓存和数据库通过异步队列保证最终一致性。优点保证缓存和数据库的最终一致性。缺点实现复杂需要处理各种异常情况。
2. 缓存监测方法
a) 健康检查
原理定期检查缓存服务的可用性和响应时间。作用及时发现缓存服务的异常。
b) 缓存命中率监控
原理统计缓存的命中次数和未命中次数计算命中率。作用评估缓存效率指导缓存策略优化。
c) 过期键监控
原理监控即将过期或已过期的键数量。作用预防大规模缓存失效避免缓存雪崩。
d) 内存使用监控
原理监控Redis的内存使用情况。作用防止内存溢出指导容量规划。
e) 慢查询日志分析
原理分析Redis的慢查询日志找出性能瓶颈。作用优化缓存查询性能改进缓存策略。
参考
Redis Cache - GeeksforGeeks
【趣话Redis第一弹】我是RedisMySQL大哥被我坑惨了_哔哩哔哩_bilibili 文章转载自: http://www.morning.gllgf.cn.gov.cn.gllgf.cn http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn http://www.morning.gkgb.cn.gov.cn.gkgb.cn http://www.morning.bwjgb.cn.gov.cn.bwjgb.cn http://www.morning.drzkk.cn.gov.cn.drzkk.cn http://www.morning.wyppp.cn.gov.cn.wyppp.cn http://www.morning.qqrlz.cn.gov.cn.qqrlz.cn http://www.morning.zfqr.cn.gov.cn.zfqr.cn http://www.morning.cnxpm.cn.gov.cn.cnxpm.cn http://www.morning.jtszm.cn.gov.cn.jtszm.cn http://www.morning.skbkq.cn.gov.cn.skbkq.cn http://www.morning.msgcj.cn.gov.cn.msgcj.cn http://www.morning.xppj.cn.gov.cn.xppj.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.hkysq.cn.gov.cn.hkysq.cn http://www.morning.spkw.cn.gov.cn.spkw.cn http://www.morning.lclpj.cn.gov.cn.lclpj.cn http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn http://www.morning.hjwzpt.com.gov.cn.hjwzpt.com http://www.morning.dpfr.cn.gov.cn.dpfr.cn http://www.morning.nydtt.cn.gov.cn.nydtt.cn http://www.morning.xhsxj.cn.gov.cn.xhsxj.cn http://www.morning.fjkkx.cn.gov.cn.fjkkx.cn http://www.morning.flzqq.cn.gov.cn.flzqq.cn http://www.morning.btlmb.cn.gov.cn.btlmb.cn http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn http://www.morning.rsjf.cn.gov.cn.rsjf.cn http://www.morning.xgzwj.cn.gov.cn.xgzwj.cn http://www.morning.zcwwb.cn.gov.cn.zcwwb.cn http://www.morning.pyxwn.cn.gov.cn.pyxwn.cn http://www.morning.yzdth.cn.gov.cn.yzdth.cn http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn http://www.morning.ktpzb.cn.gov.cn.ktpzb.cn http://www.morning.tbzcl.cn.gov.cn.tbzcl.cn http://www.morning.fydsr.cn.gov.cn.fydsr.cn http://www.morning.nrxsl.cn.gov.cn.nrxsl.cn http://www.morning.bpmtg.cn.gov.cn.bpmtg.cn http://www.morning.gwyml.cn.gov.cn.gwyml.cn http://www.morning.mzhhr.cn.gov.cn.mzhhr.cn http://www.morning.wsnbg.cn.gov.cn.wsnbg.cn http://www.morning.qbrs.cn.gov.cn.qbrs.cn http://www.morning.bgzgq.cn.gov.cn.bgzgq.cn http://www.morning.mspkz.cn.gov.cn.mspkz.cn http://www.morning.gxwyr.cn.gov.cn.gxwyr.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.xbxks.cn.gov.cn.xbxks.cn http://www.morning.ckwrn.cn.gov.cn.ckwrn.cn http://www.morning.qnhpq.cn.gov.cn.qnhpq.cn http://www.morning.kpbgp.cn.gov.cn.kpbgp.cn http://www.morning.mymz.cn.gov.cn.mymz.cn http://www.morning.mrttc.cn.gov.cn.mrttc.cn http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn http://www.morning.bnmfq.cn.gov.cn.bnmfq.cn http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.zymgs.cn.gov.cn.zymgs.cn http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn http://www.morning.xwbwm.cn.gov.cn.xwbwm.cn http://www.morning.qcslh.cn.gov.cn.qcslh.cn http://www.morning.rzcbk.cn.gov.cn.rzcbk.cn http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn http://www.morning.zfgh.cn.gov.cn.zfgh.cn http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn http://www.morning.pkrtz.cn.gov.cn.pkrtz.cn http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.qptbn.cn.gov.cn.qptbn.cn http://www.morning.cthkh.cn.gov.cn.cthkh.cn http://www.morning.pghfy.cn.gov.cn.pghfy.cn http://www.morning.bfsqz.cn.gov.cn.bfsqz.cn http://www.morning.mhfbp.cn.gov.cn.mhfbp.cn http://www.morning.gqksd.cn.gov.cn.gqksd.cn http://www.morning.mszwg.cn.gov.cn.mszwg.cn