![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis缓存
文章平均质量分 55
探究Redis的使用方法、场景和底层源码的实现细节
呱呱
这个作者很懒,什么都没留下…
展开
-
Redis:Redisson分布式锁的锁续期原理
之前说的如果使用setnx做分布式锁的时候,会有锁续期的问题,也就是说如果锁过期时间10s,而业务处理花了30s,而redisson就可以处理恰好处理这类锁续期的问题;而这类自动续期的机制就是所谓的看门狗机制总的来说就是默认锁过期时间是30s,而自动续期机制在源码当中就是开启了定时任务,定时间隔是看门狗时间的三分之一,也就是10s,所以就是在业务没有处理完的情况下锁默认每隔10s续期到30s;下面主要看看源码当中是怎么定义的;看门狗源码分析源码:RedissonLock.classprivate原创 2022-03-01 22:43:55 · 6218 阅读 · 0 评论 -
分布式缓存一致性:双写模式和失效模式
1、双写模式双写模式:就是写完数据库之后再去写缓存,保持缓存一致性;脏数据问题:如上图,线程A和B都去写数据库,正常情况下应该是,A先写数据库先写缓存,B后写数据库后写缓存;但是由于卡顿等原因,导致写缓存2在最前,写缓存1在后面就出现了不一致;出现脏数据,但是这是暂时性的脏数据问题,在数据稳定,缓存过期以后,又能得到最新的正确数据;2、失效模式失效模式:简言之就是写完数据库,不用写缓存,而是删缓存,等有请求进来读数据的时候,缓存中没有,就会查数据库,然后主动放到缓存里面。也叫触发主动更新;3、原创 2022-02-28 23:28:38 · 2428 阅读 · 1 评论 -
Redis:缓存失效问题(缓存穿透、雪崩、击穿)
缓存穿透查询一个永不存在的数据指查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义;风险:利用不存在的数据进行攻击,数据库瞬时压力增大,最终导致崩溃解决:null结果缓存,并加入短暂过期时间;布隆过滤器、mvc拦截器布隆过滤器对于有些场景,当访问一个本就不存的数据时,这时我们不需要去走redis和数据库查询,应该直接返回一个错误的提示,这样可以防止恶意访原创 2022-02-28 23:11:13 · 359 阅读 · 0 评论 -
认证服务:验证码防刷校验与密码加密
验证码防刷校验为了避免验证码重复发送,可以引入redis将验证码缓存起来;发送验证码,先去缓存中查,如果有,判断时间,确保60s之后才能再次发送验证码;如果没有,就可以发送;验证码的再次校验,使用redis将验证码缓存起来,并设置过期时间,如果验证码匹配成功,就立即删除缓存;key->sms:code:15825826017value->45678_当前时间(System.currentTimeMillis())设置认证服务的常量public class AuthServ原创 2022-02-28 23:02:51 · 644 阅读 · 0 评论