首页 > 其他分享 >缓存的常见问题以及SpringCache的解决方案

缓存的常见问题以及SpringCache的解决方案

时间:2023-06-27 11:15:43浏览次数:36  
标签:缓存 SpringCache 过期 数据 击穿 常见问题 设置 热点

总体来说,缓存在使用的过程中主要面临以下几个问题:

  1. 缓存击穿(某个热点数据的key失效了)
    缓存中无数据,但是数据库中有数据,由于是热点key,如果同一时间大量请求进来会导致数据库压力大增
  2. 缓存雪崩
    与缓存击穿类似,只不过缓存雪崩是多个热点key同时失效
  3. 缓存穿透
    查询不存在的数据,当同时有大量请求查询不存在的数据时,会对数据库造成巨大的压力。

缓存使用过程中的问题解决思路:
关于缓存击穿:

  • 设置热点数据不过期
  • 定时任务更新缓存热点数据
  • 设置互斥锁:当发现缓存中不存在数据时枷锁,其他线程访问时需要等待直到数据更新到缓存中
  • 在springcache中,通过在@Cacheable注解中使用sync=true选项,可以将底层缓存锁住,也就是互斥锁的解决方案。

关于缓存雪崩:

  • 为热点数据设置不同的过期时间
  • 设置热点数据永不过期
  • 定时任务更新缓存热点数据
  • 在springcache中,在CacheManager中配置多个过期时间维度

关于缓存击穿:

  • 在应用层对不合理请求进行过滤
  • 对不存在的数据进行缓存,设置较短的过期时间
  • 在springcache中,配置缓存空结果:在配置文件中,设置cache-null-value:true(默认为true);注解中默认不配置condition或者unless

标签:缓存,SpringCache,过期,数据,击穿,常见问题,设置,热点
From: https://www.cnblogs.com/gengone/p/17508116.html

相关文章

  • 强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-cri
    强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantageactor-critic,A2C),异步A2C、与生成对抗网络的联系等详解1.核心词汇优势演员-评论员(advantageactor-critic,A2C)算法:一种改进的演员-评论员(actor-critic)算法。异步优势演员-评论员(asynchronousadvanta......
  • 强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-cri
    强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantageactor-critic,A2C),异步A2C、与生成对抗网络的联系等详解1.核心词汇优势演员-评论员(advantageactor-critic,A2C)算法:一种改进的演员-评论员(actor-critic)算法。异步优势演员-评论员(asynchronousadvant......
  • 高并发下的缓存穿透
    高并发下的缓存穿透什么是缓存穿透大量并发去访问一个数据库不存在的数据,由于缓存中没有该数据导致大量并发查询数据库,这个现象要缓存穿透。缓存穿透可以造成数据库瞬间压力过大,连接数等资源用完,最终数据库拒绝连接不可用。如何解决缓存穿透对请求增加校验机制比如:课程......
  • 高并发下的缓存击穿
    高并发下的缓存击穿什么是缓存击穿缓存击穿是指大量并发访问同一个热点数据,当热点数据失效后同时去请求数据库,瞬间耗尽数据库资源,导致数据库无法使用。比如某手机新品发布,当缓存失效时有大量并发到来导致同时去访问数据库。如何解决缓存击穿使用同步锁控制查询数据库的......
  • 高并发下的缓存雪崩
    高并发下的缓存雪崩什么是缓存雪崩缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。造成缓存雪崩问题的原因是是大量key拥有了相同的过期时间,比如对课程信息设置缓存过期时间为10分钟,在大量请求同时查询大量的......
  • Linux实例常用内核网络参数与常见问题处理
    查看和修改Linux实例内核参数方法一、通过 /proc/sys/ 目录查看内核参数:使用 cat 查看对应文件的内容,例如执行命令 cat/proc/sys/net/ipv4/tcp_tw_recycle 查看 net.ipv4.tcp_tw_recycle 的值。修改内核参数:使用 echo 修改内核参数对应的文件,例如执行命令 echo"......
  • charles使用常见问题与解决方法
    Charles使用常见问题与解决方法一.charles断点常见问题与解决办法1.开启断点后,客户端刷新页面,charles没有拦截到请求问题原因:客户端和charles有缓存,客户端在发起请求时,会直接从缓存中读取数据,没有请求服务端解决方法:把浏览器和charles的缓存清除,勾选不保存缓存数据2.开启断点后,客......
  • 缓存与DB数据一致性问题解决的几个思路
    使用缓存必然会碰到缓存跟真实数据不一致的问题,虽然我们会在数据发生变化时通知缓存,但是这个延迟时间内必然会导致数据不一致,如何解决一般有下面几个思路:首先,当这个延迟如果在业务上时可以接受的,比如文章阅读、评论次数这样的缓存数据,这样的问题这里不考虑。 类似数据库分布式事务......
  • MyBatis 缓存
     MyBatis一级缓存1一级缓存原理在一次SqlSession中(数据库会话),程序执行多次查询,且查询条件完全相同,多次查询之间程序没有其他增删改操作,则第二次及后面的查询可以从缓存中获取数据,避免走数据库。 每个SqlSession中持有了Executor,每个Executor中有一个LocalCache。当用......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我......