zoukankan      html  css  js  c++  java
  • redis过期键

    一、过期设置

    1.1 过期设置的指令

    • Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间
    • expire可以设置过期时间
     1 SET key value        // 存入键值对
     2     
     3 EXPIRE key 5        // 设置过期时间(秒)
     4 PEXPIRE key 5000    // 设置过期时间(毫秒)
     5 
     6 TTL key            // 返回key剩余过期时间(Time To Live)
     7 
     8 PRESIST key        // 移除键的过期时间
     9 
    10 TIME            // 查看当前时间戳

    1.2 指令转换关系

    • 所有设置时间的指令最终都会转换成为PEXPIREAT指令:以毫秒精度,设置过期时间(一个UNIX时间戳),当过期时间来临时,服务器自动删除该键
      • EXPIREAT:以秒为单位设置过期时间(时间戳)
      • 转换关系:

    1.3 检查过期策略

    • 检查给定键是否存在过期字典,如果存在,则取得键的过期时间(redisDb.expires过期字典保存了所有键过期时间)
    • 检查当前的UNIX时间戳是否大于键的过期时间,大于的话则键已经过期

    二、清除策略

    2.1 定时过期

    每个设置过期时间的key创建一个定时器,到过期时间就会立即清除。

    • 优点:内存友好,及时清理
    • 缺点:占用大量的CPU资源处理过期数据,影响缓存的响应时间和吞吐量

    2.2 惰性过期

    访问一个key时,才判断该key是否已经过期,过期则清除。

    • 优点:最大化节约CPU资源
    • 缺点:对内存不友好,可能存在大量key没有再次被访问而占用大量内存的问题

    2.3 定期过期

    每隔一段时间,扫描一定数量的数据库expires字典中一定数量的key,清除其中过期的key。

    • 优点:定期过期是对上面两种方式的一种整合和折中,通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。
    • 缺点:难以确定删除操作执行的时长、频率

    Redis服务器使用了惰性过期和定期过期两种过期策略。

    三、持久化对过期键处理

    3.1 RDB

    • 保存快照时,过期键不保存
    • 载入RDB文件时
      • 主服务器:检查剔除过期键(不载入过期键)
      • 从服务器:会载入所有数据(载入过期键),不过主服务器在数据同步的时候,从服务器的数据会被清空,所以载入过期键并不会造成影响

    3.2 AOF

    • 文件写入时,如果某个键已经过期
      • 没有被惰性过期/定期过期删除,AOF不会因为键过期产生任何影响(保存写操作)
      • 当过期键被惰性过期/定期过期删除,程序向AOF中追加一条DEL命令来表示该键已经被删除
    • 文件重写时,检查剔除过期键(已过期键不会被重写入AOF文件中)

    3.3 主从复制

    • 主服务器删除一个过期键后,会显示地向所有从服务器发送一个DEL命令,告知从服务器删除过期键
    • 从服务器在执行客户端发送地读命令时,即使遇到过期键也不会删除(惰性过期),而是继续像处理未过期键一样处理过期键,会正常返回查询结果。
    • 从服务器只有在收到主服务器发来的DEL命令之后,才会删除过期键

    本文来自博客园,作者:Mr-xxx,转载请注明原文链接:https://www.cnblogs.com/MrLiuZF/p/15092024.html

  • 相关阅读:
    经典句子与段落点滴记录
    人生成功的六匹马(转自喷嚏网的一篇品书)
    Android 时间 更新与同步
    Camera driver&V4L2驱动架构介绍
    SimpleApp例子中网络的形成过程(转)
    Zigbee之旅(十):综合小实验——基于CC2430的温度监测系统(转)
    ZStack协议中命令的概念(转)
    Zigbee之旅(八):几个重要的CC2430基础实验——看门狗(转)
    Zigbee之旅(七):几个重要的CC2430基础实验——DMA传输(转)
    Zigbee之旅(六):几个重要的CC2430基础实验——ADC单次采样(转)
  • 原文地址:https://www.cnblogs.com/MrLiuZF/p/15092024.html
Copyright © 2011-2022 走看看