seo网站建设及扩词建筑效果图网站有哪些
seo网站建设及扩词,建筑效果图网站有哪些,站外推广怎么做,网站建设的设计方案和实施计划Redis 做缓存虽减轻了 DBMS 的压力#xff0c;减小了 RT#xff0c;但在高并发情况下也是可能会出现各种问题的。
缓存穿透
当用户访问的数据既不在缓存也不在数据库中时#xff0c;就会导致每个用户查询都会“穿透”缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发…Redis 做缓存虽减轻了 DBMS 的压力减小了 RT但在高并发情况下也是可能会出现各种问题的。
缓存穿透
当用户访问的数据既不在缓存也不在数据库中时就会导致每个用户查询都会“穿透”缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发的访问请求到达时缓存穿透不仅增加了响应时间而且还会引发对 DBMS 的高并发查询这种高并发查询很可能会导致DBMS 的崩溃。 缓存穿透产生的主要原因有两个一是在数据库中没有相应的查询结果二是查询结果为空时不对查询结果进行缓存。所以针对以上两点解决方案也有两个
对非法请求进行限制对结果为空的查询给出默认值
缓存击穿
对于某一个缓存在高并发情况下若其访问量特别巨大当该缓存的有效时限到达时可能会出现大量的访问都要重建该缓存即这些访问请求发现缓存中没有该数据则立即到DBMS 中进行查询那么这就有可能会引发对 DBMS 的高并发查询从而接导致 DBMS 的崩溃。这种情况称为缓存击穿而该缓存数据称为热点数据。对于缓存击穿的解决方案较典型的是使用“双重检测锁”机制。 双重检测锁
缓存雪崩
对于缓存中的数据很多都是有过期时间的。若大量缓存的过期时间在同一很短的时间段内几乎同时到达那么在高并发访问场景下就可能会引发对 DBMS 的高并发查询而这将可能直接导致 DBMS 的崩溃。这种情况称为缓存雪崩。对于缓存雪崩没有很直接的解决方案最好的解决方案就是预防即提前规划好缓存的过期时间。要么就是让缓存永久有效当 DB 中数据发生变化时清除相应的缓存。如果 DBMS采用的是分布式部署则将热点数据均匀分布在不同数据库节点中将可能到来的访问负载均衡开来。
数据库缓存双写不一致
1 “修改 DB 更新缓存”场景 对于具有缓存 warmup 功能的系统DBMS 中常用数据的变更都会引发缓存中相关数据的更新。在高并发写请求场景下若多个请求要对 DBMS 中同一个数据进行修改修改后还需要更新缓存中相关数据那么就有可能会出现缓存与数据库中数据不一致的情况。 2 “修改 DB 删除缓存”场景 在很多系统中是没有缓存 warmup 功能的为了保持缓存与数据库数据的一致性一般都是在对数据库执行了写操作后就会删除相应缓存。 在高并发读写请求场景下若这些请求对 DBMS 中同一个数据的操作既包含写也包含读且修改后还要删除缓存中相关数据那么就有可能会出现缓存与数据库中数据不一致的情况 3 解决方案延迟双删 延迟双删方案是专门针对于“修改 DB 删除缓存”场景的解决方案。但该方案并不能彻底解决数据不一致的状况其只可能降低发生数据不一致的概率。 延迟双删方案是指在写操作完毕后会立即执行一次缓存的删除操作然后再停上一段时间一般为几秒后再进行一次删除。而两次删除中间的间隔时长要大于一次缓存写操作的时长。 4 解决方案队列 以上两种场景中只所以会出现数据库与缓存中数据不一致主要是因为对请求的处理出现了并行。只要将请求写入到一个统一的队列只有处理完一个请求后才可处理下一个请求即使系统对用户请求的处理串行化就可以完全解决数据不一致的问题。 5 解决方案分布式锁 使用队列的串行化虽然可以解决数据库与缓存中数据不一致但系统失去了并发性降低了性能。使用分布式锁可以在不影响并发性的前提下协调各处理线程间的关系使数据库与缓存中的数据达成一致性。只需要对数据库中的这个共享数据的访问通过分布式锁来协调对其的操作访问即可。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90326.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!