zoukankan      html  css  js  c++  java
  • redis中获取没有设置ttl过期时间的key

    需求:redis作为一个内存型的数据库,我们需要对过期key保持关注,从info keyspace中可以看出有多少key没有设置过期时间,那么到底是哪些呢?

    说明:关于redis ttl 的返回值,请参考http://redisdoc.com/key/ttl.html

    测试数据:

    5.5.5.101:6379> get c_100
    "100"
    5.5.5.101:6379> ttl c_100
    (integer) -1
    5.5.5.101:6379> expire c_100 600
    (integer) 1
    5.5.5.101:6379> expire c_1000 600
    (integer) 1
    5.5.5.101:6379> expire c_888 600
    (integer) 1
    5.5.5.101:6379> dbsize
    (integer) 10000
    5.5.5.101:6379> info keyspace
    # Keyspace
    db0:keys=10000,expires=3,avg_ttl=583699

    获取没有设置ttl过期的key名字

    db_ip=5.5.5.101
    db_port=6379
    password=abc123
    cursor=0
    cnt=100
    new_cursor=0
    
    redis-cli -h $db_ip -p $db_port -a $password scan $cursor count $cnt > scan_tmp_result
    new_cursor=`sed -n '1p' scan_tmp_result`
    sed -n '2,$p' scan_tmp_result > scan_result
    cat scan_result |while read line
    do
        ttl_result=`redis-cli -h $db_ip -p $db_port -a $password ttl $line`
        if [[ $ttl_result == -1 ]];then
            echo $line >> no_ttl.log
        fi
    done
    
    
    while [ $cursor -ne $new_cursor ]
    do
        redis-cli -h $db_ip -p $db_port -a $password scan $new_cursor count $cnt > scan_tmp_result
        new_cursor=`sed -n '1p' scan_tmp_result`
        sed -n '2,$p' scan_tmp_result > scan_result
        cat scan_result |while read line
        do
            ttl_result=`redis-cli -h $db_ip -p $db_port -a $password ttl $line`
            if [[ $ttl_result == -1 ]];then
                echo $line >> no_ttl.log
            fi
        done
    done
    rm -rf scan_tmp_result
    rm -rf scan_result

    查看结果:

    [redis@lxd-vm1 ~]$ wc -l no_ttl.log 
    9997 no_ttl.log
    [redis@lxd-vm1 ~]$ 
  • 相关阅读:
    Codeforces1499D The Number of Pairs
    Codeforces1493D GCD of an Array
    AtCoder Beginner Contest 192 F
    Codeforces 1485F Copy or Prefix Sum
    Miller_Rabin
    Codeforces Round 655 (Div. 2) E
    Codeforces Round 655 (Div. 2) D
    B
    A
    待更新笔记
  • 原文地址:https://www.cnblogs.com/imdba/p/10161343.html
Copyright © 2011-2022 走看看