redis的缓存击穿与穿透,redis缓存知识问题
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。
在高并发系统中,缓存是必不可少的一部分。没有缓存对系统的加速和阻挡大量的请求直接落到系统的数据库,系统是很难撑住高并发的冲击。所以缓存设计是系统很关键的一环。
1、缓存更新
缓存的数据一般都是有有效期的,过了一段时间之后就会失效,再次访问时需要重新加载。缓存的失效是为了保证与数据源真实的数据保证一致性和缓存空间的有效利用性。
缓存更新一般分为3种
1、空间有限,当达到最大值时 根据系统的设置规则直接过期的,
比如最少使用、随机等一些过期策略。
2、缓存设置了过期时间的。
3、数据库更新了,主动更新缓存数据的。
一般的话 低一致性要求的符合1和2即可。
高一致性的符合2和3的方式。
2、缓存穿透
缓存穿透指的是查询一个不存在的数据,进而导致每次都落到数据库里面去查询。
1、解决办法主要是缓存一个空数据,并且设置一个较短的有效期,避免每次都命中数据库。
2、针对查询的键key 规则进行校验,比如 id_{N}
N数据 可以对N的格式和范围进行校验,不符合的直接返回,不往下走。
这种一般是在缓存key不存在且数据库不存在的情况下发生。
3、缓存雪崩
缓存雪蹦指的是同一时间大量缓存过期或者缓存不可用,导致大量的请求进入数据层。
针对这种情况一般是
1 设置缓存的过期时间,一般需要再加些随机数,避免过期时间大家都一样。
2、保证缓存服务的高可用。
3、缓存击穿:
指的是单个key在缓存中查不到,去数据库查询,如果数据库数据量大并且是高并发的情况下那么就可能会造成数据库压力过大而崩溃。
解决办法
1 使用锁机制确保缓存生成过程是单线程在操作,其他线程需等待、重试。
2、利用redis add 特性 直接加锁,其他请求进来,判断是进行中的直接return.
XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。
免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!
联系邮箱:773537036@qq.com