风景旅游网站建设的设计思路,wordpress 标签输出,如何创建公众号微信,优化方案数学2023版电子版前段时间#xff0c;在和朋友讨论和研究缓存的使用#xff0c;一直对缓存的使用搞的不太清楚#xff0c;所以这次把和朋友讨论过缓存系统的设计的相关问题总结总结。 对于一个电商系统#xff0c;缓存是重要组成部分#xff0c;提升系统性能的主要方式之一就是缓存。它可以… 前段时间在和朋友讨论和研究缓存的使用一直对缓存的使用搞的不太清楚所以这次把和朋友讨论过缓存系统的设计的相关问题总结总结。 对于一个电商系统缓存是重要组成部分提升系统性能的主要方式之一就是缓存。它可以挡掉大部分的数据库访问的冲击如果没有它系统很可能会因为数据库不可用导致整个系统崩溃。 但是缓存带来了另外一些棘手的问题 数据的一致性和实时性。 例如数据库中的数据状态已经改变但是在页面上看到的仍然是缓存的旧值直到缓冲时间失效之后才能重新更新缓存。这个问题怎么解决 还有就是缓存数据如果没有失效的话是会一直保持在内存中的所以对服务器的内存也是负担那么什么数据可以放缓存什么数据不可以这是系统设计之初必须考虑的问题。 什么数据可以放缓存 1不需要实时更新但是又极其消耗数据库的数据。比如网站首页的商品销售的排行榜热搜商品等等这些数据基本上都是一天统计一次用户不会关注其是否是实时的。 2需要实时更新但是数据更新的频率不高的数据。 3每次获取这些数据都经过复杂的处理逻辑比如生成报表。 什么数据不应该使用缓存 实际上在电商系统中大部分数据都是可以缓存的不能使用缓存的数据很少。这类数据包括比如涉及到钱、密钥、业务关键性核心数据等。总之如果你发现系统里面的大部分数据都不能使用缓存这说明架构本身出了问题。 如何解决一致性和实时性的问题 保证一致性和实时性的办法就是一旦数据库更新了就必须把原来的缓存更新。 说一说我们的缓存方案 我们目前的缓存系统Redis主从 RabbitMQ 缓存清理服务组成具体如下图 缓存清理作业订阅 RabbitMQ消息队列一有数据更新进入队列就将数据重新更新到Redis缓存服务器。 当然有些朋友的方案是数据库更新完成之后立马去更新相关缓存数据。这样就不需要MQ 和 缓存清理作业。不过这同时也增加了系统的耦合性。具体得看自己的业务场景和平台大小。 转载于:https://www.cnblogs.com/zhangweizhong/p/5884761.html