redis中獲取每個數據類型top-n的bigkeys信息


 

需求:之前寫的腳本獲取redis 最大的top-n的bigkeys,沒有區分數據類型,如果要針對每個數據類型的前top-n的bigkeys獲取呢?

 

db_ip=5.5.5.101
db_port=6379
password=abc123
cursor=0
cnt=100
new_cursor=0

function get_key()
{
redis-cli -h $db_ip -p $db_port -a $password scan $1 count $cnt > scan_tmp_result
new_cursor=`sed -n '1p' scan_tmp_result`
sed -n '2,$p' scan_tmp_result > scan_result
}

function get_keyinfo()
{
    cat $1 |while read line
    do
        key_size=`redis-cli -h $db_ip -p $db_port -a $password memory usage $line`
        key_type=`redis-cli -h $db_ip -p $db_port -a $password type $line`
        echo $line $key_type $key_size >> "$key_type.txt"    
    done
}


get_key $cursor
get_keyinfo scan_result

while [ $cursor -ne $new_cursor ]
do
    get_key $new_cursor
    get_keyinfo scan_result
done

all_types="string list set hash zset"
for type in $all_types
do
    echo "-----------top $1 $type data type-----------"
    if [[ -f "$type.txt" ]];then
        cat "$type.txt" | sort -nrk3 | sed -n "1,$1p"
    else
        echo "The instance does not have $type data type"
    fi
done


rm -rf scan_tmp_result
rm -rf scan_result
rm -rf string.txt
rm -rf set.txt

測試結果:

[redis@lxd-vm1 ~]$ sh get_type_top.sh 5
-----------top 5 string data type-----------
test2 string 12325
test string 1589
c_9 string 49
c_99 string 49
c_999 string 49
-----------top 5 list data type-----------
c list 885
b list 553
-----------top 5 set data type-----------
hello set 285
world set 71
-----------top 5 hash data type-----------
The instance does not have hash data type
-----------top 5 zset data type-----------
The instance does not have zset data type

 


免責聲明!

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



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