查詢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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM