zoukankan      html  css  js  c++  java
  • redis删除策略

    redis 设置过期时间
      Redis 中有个设置时间过期的功能,即对存储在 redis 数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的 token 或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。
    我们 set key 的时候,都可以给一个 expire time,就是过期时间,通过过期时间我们可以指定这个 key
    可以存活的时间。
      如果假设你设置了一批 key 只能存活 1 个小时,那么接下来 1 小时后,redis 是怎么对这批 key 进行删
    除的?定期删除+惰性删除。
     
     删除策略
       定期删除:redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。
       惰性删除 :定期删除可能会导致很多过期 key 到了时间并没有被删除掉。所以就有了惰性删除。假如你的过期 key,靠定期删除没有被删除掉,还停留在内存里,除非你的系统去查一下那个 key,才会被redis 给删除掉。这就是所谓的惰性删除!
       存在问题及解决方法
        但是仅仅通过设置过期时间还是有问题的。我们想一下:如果定期删除漏掉了很多过期 key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?如果大量过期 key 堆积在内存里,导致 redis 内存块耗尽了。怎么解决这个问题呢?-------内存淘汰策略
  • 相关阅读:
    Python基础第四天
    Python基础第三天
    禁用站点asp运行
    Javaee中文乱码解决方法
    企业研发流程演进之路
    【项目实践】手把手教你自建高性能对象存储服务器
    我们到底为什么要用 IoC 和 AOP
    【项目实践】商业计算怎样才能保证精度不丢失
    人人都可以教张小龙做产品
    【项目实践】依赖注入用得好,设计模式随便搞
  • 原文地址:https://www.cnblogs.com/crazy-lc/p/11945826.html
Copyright © 2011-2022 走看看