zoukankan      html  css  js  c++  java
  • redis expire超时操作

    基本使用:
    127.0
    .0.1:6379> EXPIRE user 1000 (integer) 1 127.0.0.1:6379> ttl user # 查看剩余超时时间 (integer) 996

    超时重置

      有些redis命令会清除key的超时时间,如set,del,getset和所有的*Store命令。即修改redis的值而不是替换的化将不会修改key的超时时间。像incr、hset、lpush不会改变key的超时设置,也可以通过命令pexpire手动清除超时,将key变成持久的key。

         重命名key不会清除key的超时时间。

    127.0.0.1:6379> set name hh
    OK
    127.0.0.1:6379> EXPIRE name 30
    (integer) 1
    127.0.0.1:6379> ttl name
    (integer) 27
    127.0.0.1:6379> set name h1 ## set后会清除key的超时时间
    OK
    127.0.0.1:6379> ttl name
    (integer) -1
    127.0.0.1:6379> EXPIRE name 20
    (integer) 1
    127.0.0.1:6379> GETSET name h2
    "h1"
    127.0.0.1:6379> ttl name
    (integer) -1
    127.0.0.1:6379> 
    

      修改命令不会重置超时时间

    127.0.0.1:6379> LPUSH namelist hh
    (integer) 1
    127.0.0.1:6379> EXPIRE namelist 20
    (integer) 1
    127.0.0.1:6379> ttl namelist
    (integer) 18
    127.0.0.1:6379> lpush namelist h2
    (integer) 2
    127.0.0.1:6379> ttl namelist
    (integer) 3
    

      

    redis的key如何过期

      redis中key过期有两种,主动过期和被动过期。

      被动过期:当访问一个key时被发现过期。

      主动过期:redis会定期的从自己维护的有expire属性的key集中随机测试一些键的过期时间,过期的键会被删除。

        具体机制为:

      1. 从具有过期属性的key集中随机抽取20个key。
      2. 删除所有过期的key。
      3. 如果过期的key占比超过25%,重复第一步。

    在副本和AOF文件中如何处理过期

      redis主节点在key过期时,会生成一个del命令保存到AOF文件或发送到从节点,即从节点自己不会主动过期key,而是接受主服务器的del,但是从节点仍然保存着key的过期信息,以便在主节点挂掉时,从节点在被选为主节点时有能力删除过期的键。

  • 相关阅读:
    oracle 安装
    C++中 接口的定义 COM
    linux查看及改变运行级别
    BSD Apache GPL LGPL MIT
    DES MAC PIN HEX
    c语言字符输出格式化
    oracle
    Windows C++ 子目录数量
    GetProcAddress 宏
    How do I install Adobe Flash on Debian Wheezy?
  • 原文地址:https://www.cnblogs.com/hhan/p/10955287.html
Copyright © 2011-2022 走看看