美文网首页
二级缓存在业务中的使用

二级缓存在业务中的使用

作者: 小丸子的呆地 | 来源:发表于2021-06-26 06:56 被阅读0次

1. 导致缓存与数据不一致的几个原因?

异常且无事物;并发读写。

2. 使用缓存时,先改数据库还是先改缓存?

(1) 先库后缓存,存在缓存更新失败导致数据不一致的问题(常规方案)。
(2) 先缓存再改库,增大了读写并发的数据库不一致问题的出现几率。T2删除缓存,T1读取旧数据,T2修改数据,T1将旧数据写入缓存。(这种方案在读取qps很高的情况下,很容易出现问题)。

3. 使用缓存时,修改完数据,直接更新缓存还是删除缓存?

(1) 简单值或不依赖其他操作的值 可以直接写入缓存(值一旦创建后不会发生修改或很少修改,可以使用这种方案)。
(2) 复杂值或依赖其他操作的值,应该直接删除缓存,等待读取线程的load。

4. 是否需要给缓存设置过期时间?

(1) 设置缓存过期时间是保证数据缓存最终一致性的有效方式。
(2) 大量的不活跃数据如果不过期的话会占用空间,使资源利用率低,甚至影响缓存读写性能。
(3) 尽量根据业务配置过期时间,可以使缓存在一个业务周期内有效,增加缓存命中率。

场景1:数据脏缓存

问题:
将数据加载到缓存的时候,在尚未缓存或者缓存失效的情况下,T2线程读取旧数据,T1线程修改数据,T1线程清除缓存,T2线程将旧数据写入缓存,导致了缓存不一致。
解决方案: 延迟双删
在修改数据后,进行清除缓存,再将缓存设置为为异步延时1秒后再删除。1秒内可能会出现旧数据,缓存命中率会受影响。删缓存 走主库查询 再写入缓存。可能影响接口性能。

场景2:大对象宽表缓存

问题:
有些平台对外提供大对象查询接口,一整份数据size很大,涉及到需要查询的表很多,甚至还需要跨平台查询数据,并且如果这个接口qps很高,接口性能就有可能不太理想。
解决方案:
对整份数据做缓存,对部分接口提供缓存数据查询,避免多表大量数据查询。经设计后,选用修改数据后删除缓存,读取时load到缓存的方案。
子问题:
如何保证数据一致性?
对于整份复杂类型的大数据,每一次查询几乎都需要10~20ms,并且高并发下,这就很容易产生脏缓存。
解决方案: 延迟缓存
为了保证数据一致性,采用对有修改的数据在一定时间内不信任的才做,即在修改后的一定时间,不将读出来的数据load到缓存,尽量规避读写并发产生的脏缓存。

场景3:分布式锁

问题:
部分接口需要保证幂等性。
解决方案:
利用redis setnx方法,实现简单的分布式锁,加在需要保证幂等性的接口上。

相关文章

  • 二级缓存在业务中的使用

    1. 导致缓存与数据不一致的几个原因? 异常且无事物;并发读写。 2. 使用缓存时,先改数据库还是先改缓存? (1...

  • 开发之路十二——Mybatis

    1,springboot中mybatis二级缓存 1,配置文件打开二级缓存 2,在mapper.xml文件中添加 ...

  • 12|第十二课:禁用清理二级缓存

    一、历史回顾 (一)、二级缓存使用 二、禁用清理二级缓存和整合Ehcache缓存 (一)、禁用清理二级缓存 清理:...

  • Springboot + Mybatis + Redis 实现二

    1.使用redis 实现mybaits 的二级缓存功能:使用Redis实现二级缓存,将运行结果存放在redis当中...

  • Mybatis二级缓存问题

    一级缓存为SqlSession中自带的区间,在方法内可以 直接使用缓存 二级缓存的使用 首先需要关闭一级缓存,Sq...

  • Mybatis的二级缓存刷新细节

    开始使用mybatis缓存时,会主动尝试mybatis的二级缓存,二级缓存是基于SqlSessionFactory...

  • Mybatis缓存问题

    Mybatis在查询时会采用缓存机制,分为一级缓存和二级缓存,一级缓存默认就会开启,二级缓存需要配置才可以使用。 ...

  • 四、Hibernate

    1. 二级缓存 Hibernate中的二级缓存,二级缓存是属于SessionFactory级别的缓存机制。第一级别...

  • hibernate validator在实际业务场景中的使用

    很多程序员在写web开发时经常遇到字段的校验,邮箱、出生日期、非空等业务需求,为了解决这个繁琐重复的烦恼,hib...

  • Hibernate16-Hibernate二级缓存

    什么是二级缓存二级缓存在hibernate中对应为SessionFactory范围的缓存,通常来讲sessionf...

网友评论

      本文标题:二级缓存在业务中的使用

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