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

    #!/bin/sh

    ## 该脚本用来查询redis集群中,哪些key是没有设置过期时间,对应只需要修改redis的其中一个实例的 host和port

    ## 脚本会自动识别出该集群的所有实例,并查出对应实例中的所有key

    ## 该脚本只适用于测试环境,因为查keys 操作会影响 redis的性能,量大的情况下,会导致redis卡顿

    ## 建议建立一个独立的目录来执行脚本,重复执行脚本,会先清空部分记录中间结果的文件内容

    host=10.240.47.147
    port=7000

    # 获取redis集群各实例的 host 和 port
    redis-cli -h $host -p $port cluster nodes| grep master | awk '{print $2}' | awk -F ':' '{print $1 " " $2 }' > redis_object.info

    # 清空用来记录各个实例的 keys 的文件内容
    more redis_object.info | grep -v ^$ | while read line
    do
      #echo "**** " $line
      h=`echo $line | awk '{print $1}'`
      p=`echo $line | awk '{print $2}'`
      #echo "----" $h "---" $p "---"
      > keys_for_each_redis_object_${h}_${p}.log
    done


    # 获取redis各实例最新的keys 情况
    more redis_object.info | grep -v ^$ | while read line
    do
      h=`echo $line | awk '{print $1}' `
      p=`echo $line | awk '{print $2}'`
      redis-cli -h $h -p $p keys 1_9_* >> keys_for_each_redis_object_${h}_${p}.log
    done

     #打印各个实例中 没有设置过期时间的key

    more keys_for_each_redis_object*.log| grep -v ^$  | while read mykey
    do
      result=`redis-cli -h $host -p $port -c ttl $mykey`
      if [ $result -eq -1 ]
        then
        echo $mykey
    fi

    done

  • 相关阅读:
    乐观锁悲观锁及其使用场景
    inner join, left join, right join的作用是什么
    主键和唯一索引的区别
    在排序数组中查找元素的第一个和最后一个位置
    寻找旋转排序数组中的最小值
    [模板] 最小费用最大流
    CF878E Numbers on the blackboard
    CF1286F Harry The Potter
    CF1368H1 Breadboard Capacity
    CF1442E Black, White and Grey Tree
  • 原文地址:https://www.cnblogs.com/linlianhuan/p/9870814.html
Copyright © 2011-2022 走看看