美文网首页
缓存⼀致性问题4

缓存⼀致性问题4

作者: 嘘寒问暖 | 来源:发表于2022-07-25 23:36 被阅读0次

为什么是删除,⽽不是更新缓存?

我们以先更新数据库,再删除缓存来举例。

如果是更新的话,那就是先更新数据库,再更新缓存。

举个例⼦:如果数据库1⼩时内更新了1000次,那么缓存也要更新1000次,但是这个缓存可能在1⼩时内只被读取了1次,那么这1000次的更新有必要吗?

反过来,如果是删除的话,就算数据库更新了1000次,那么也只是做了1次缓存删除,只有当缓存真正被读取的时候才去数据库加载。

总结

⾸先,我们要明确⼀点,缓存不是更新,⽽应该是删除。

删除缓存有两种⽅式:

1. 先删除缓存,再更新数据库。解决⽅案是使⽤延迟双删。

2. 先更新数据库,再删除缓存。解决⽅案是消息队列或者其他binlog同步,引⼊消息队列会带来更多的问题,并不推荐直接使⽤。

针对缓存⼀致性要求不是很⾼的场景,那么只通过设置超时时间就可以了。其实,如果不是很⾼的并发,⽆论你选择先删缓存还是后删缓存的⽅式,都⼏乎很少能产⽣这种问题,但是在⾼并发下,你应该知道怎么解决问题。

相关文章

  • 缓存⼀致性问题4

    为什么是删除,⽽不是更新缓存? 我们以先更新数据库,再删除缓存来举例。 如果是更新的话,那就是先更新数据库,再更新...

  • java并发编程(一)缓存一致性协议

    多线程环境下存在的问题 缓存一致性问题,指令重拍问题,可见性,有序性, 缓存一致性问题 在多处理器系统中,每个处理...

  • 缓存⼀致性问题

    关于Redis的其他的⼀些⾯试问题已经写过了,⽐如常⻅的缓存穿透、雪崩、击穿、热点的问题,但是还有⼀个⽐较麻烦的问...

  • JMM 内存模型简析

    高速缓存 cpu(CPU寄存器)<---> CPU高速缓存 <---> 主内存RAM 缓存一致性问题:多个处理器的...

  • 缓存

    通过本文档,你将会了解到 为什么要使用缓存 本地缓存它不香么?为什么要使用redis缓存, 缓存一致性问题,缓存穿...

  • java多线程-3-volatile

    缓存一致性问题 起因:高速缓存 方案总线LOCK#锁,释放锁前该块内存无法被别的cpu或线程访问缓存一致性协议(I...

  • Java多线程(5)

    Java多线程(5) CPU缓存一致性问题 因为缓存的出现,极大提高了CPU的吞吐能力,但同时也引入了缓存不一致的...

  • 多线程安全问题:可见性、原子性、有序性

    引言 CPU缓存与内存产生的一致性问题 CPU时间片切换产生的原子性问题 CPU指令编译优化产生的有序性问题 并发...

  • 高并发场景下的缓存有哪些常见的问题?

    一、缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中...

  • 缓存在高并发场景下的常见问题

    一、缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中...

网友评论

      本文标题:缓存⼀致性问题4

      本文链接:https://www.haomeiwen.com/subject/tyinirtx.html