标签:逻辑 根据 define sid 而且 key targe 刷新 blank
ylbtech-Redis-Sp:刷新缓存策略 |
1.返回顶部 |
缓存和数据库更新策略对比
1. 先删除缓存、再更新数据库
在高并发下表现不如意,在原子性被破坏时表现优异
2. 先更新数据库,再删除缓存(Cache Aside Pattern设计模式))
在高并发下表现优异,在原子性被破坏时表现不如意
方案1
[主动]后台点击更新缓存按钮,从DB查找最新数据集合,删除原缓存数据,存储新数据到缓存;
问题
更新过程中删除掉缓存后刚好有业务在查询,那么这个时候返回的数据会是空,会影响用户体验
方案2
[被动]前台获取数据时发现没有缓存数据就会去数据库同步数据到缓存
问题
当并发请求获取缓存数据不存在的时候,就会产生并发的查询数据的操作。
方案3
[主动]后台点击更新缓存按钮,从DB查找最新数据集合,这里不删除缓存,通过遍历数据覆盖和删除掉无效的数据
问题
逻辑相对麻烦,而且更新机制无法通用;
方案4
[主动][预加载]前台获取缓存的时候需要先得到缓存数据对应的Redis Key(简称:[ShowingKey]),然后根据[ShowingKey]去读取缓存数据(简称:[缓存];
[ShowingKey](可以是最近一次更新缓存的时间戳或者根据自己规则自定义)
[缓存](需要缓存的数据,如:DB数据等)
2.返回顶部 |
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
6.返回顶部 |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
标签:逻辑 根据 define sid 而且 key targe 刷新 blank
原文地址:https://www.cnblogs.com/storebook/p/12658633.html