Redis 应用场景

手机验证码场景

redis里面存储过期时间。通过校验redis里面存储的值来校验验证码是否过期或者是否正确。


image.png

校验逻辑


image.png

延伸

邮件的激活也是类似,通过下发一个随机的激活码,但是这个激活码具有时效性。是天然的redis的使用场景

Redis作为缓存数据库

这里涉及到一个问题缓存中的数据如何和DB的数据进行同步呢(MySQL和Redis的双写一致性)

  • 先更新缓存再更新数据库
    如果更新缓存成功但是数据库失败,会造成脏数据,绝对不可取
  • 先更新数据库在更新缓存
    在高并发情况下,线程A更新数据库成功,但是还没有更新缓存。线程B这时候更新数据库,并且更新了缓存。这时候线程A再更新缓存。造成线程B对缓存的更新丢失了
  • 先删除缓存,再更新数据库
    这种避免了缓存更新丢失的情况,但在高并发情况下依然会有不一致情况。


    image.png

可以是使用延迟双删的方式来解决。

public void write(String key,Object data){
        redis.delKey(key);
        db.updateData(data);
        Thread.sleep(1000);
        redis.delKey(key);
}
  • 先更新数据库,再删除缓存


    image.png
public void write(String key,Object data){
    db.updateData(data);
    redis.delKey(key);
    Thread.sleep(1000);
    redis.delKey(key);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、数据一致性 1.缓存使用场景 针对读多写少的高并发场景,我们可以使用缓存来提升查询速度。 使用Redis作为缓...
    留沪小厮阅读 1,127评论 0 0
  • Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储;它的数据模型非...
    全能程序猿阅读 24,768评论 0 8
  • Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰...
    tl薰风阅读 857评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,788评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,798评论 0 11

友情链接更多精彩内容