我是靠谱客的博主 可爱时光,最近开发中收集的这篇文章主要介绍25. Cache Aside Pattern缓存+数据库读写模式Cache Aside Pattern删除缓存,而不是更新缓存28法则,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • Cache Aside Pattern
  • 删除缓存,而不是更新缓存
  • 28法则

最经典的缓存+数据库读写的模式:cache aside pattern

Cache Aside Pattern

  1. 读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应
  2. 更新的时候,先删除缓存,然后再更新数据库

删除缓存,而不是更新缓存

更新的时候,为什么是删除缓存,而不是更新缓存呢?

  1. 原因很简单,很多时候,复杂点的缓存的场景,不只是是数据库中直接取出来的值
  2. 比如商品详情页的系统,修改库存,只是修改了某个表的某些字段,但是要真正把这个影响的最终的库存计算出来,可能还需要从其他表查询一些数据,然后进行一些复杂的运算,才能最终计算出现在最新的库存是多少,将计算出的库存更新到缓存中去

比如可能更新了某个表的一个字段,然后其对应的缓存,是需要查询另外两个表的数据,并进行运算,才能计算出缓存最新的值的

28法则

28法则,黄金法则,20%的数据,占用了80%的访问量

  1. 更新缓存的代价是很高的,每次修改数据库的时候,都一定要将其对应的缓存去跟新一份?也许有的场景是这样的,但是对于比较复杂的缓存数据计算的场景,就不是这样了
  2. 如果你频繁修改一个缓存涉及的多个表,那么这个缓存会被频繁的更新,但是问题在于,这个缓存到底会不会被频繁访问到
  3. 比如一个缓存涉及的表的字段,在1分钟内就修改了20次,或者是100次,那么缓存跟着更新20次,100次; 但是这个缓存在1分钟内就被读取了1次,有大量的冷数据
  4. 实际上,如果你只是删除缓存的话,那么1分钟内,这个缓存不过就重新计算一次而已,开销大幅度降低
  5. 每次数据过来,就只是删除缓存,然后修改数据库,如果这个缓存,在1分钟内只是被访问了1次,那么只有那1次,缓存是要被重新计算的,用缓存才去算缓存
  6. 其实删除缓存,而不是更新缓存,就是一个lazy计算的思想,不要每次都重新做复杂的计算,不管它会不会用到,而是让它到需要被使用的时候再重新计算

mybatis,hibernate,懒加载,思想

最后

以上就是可爱时光为你收集整理的25. Cache Aside Pattern缓存+数据库读写模式Cache Aside Pattern删除缓存,而不是更新缓存28法则的全部内容,希望文章能够帮你解决25. Cache Aside Pattern缓存+数据库读写模式Cache Aside Pattern删除缓存,而不是更新缓存28法则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部