美文网首页
Redis 应用场景

Redis 应用场景

作者: 黑曼巴yk | 来源:发表于2020-12-27 15:17 被阅读0次

    手机验证码场景

    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);
    }
    

    相关文章

      网友评论

          本文标题:Redis 应用场景

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