redisインスタンスの最大top-N keyの取得

1410 ワード

需要:redisインスタンスで最大top-N keyを取得
説明:redis 4のため.xはmemory usage keynameの構文を導入した.3.xはサポートされていません!
 
db_ip=5.5.5.101db_port=6379password=abc123cursor=0cnt=100new_cursor=0
function get_key(){redis-cli -h $db_ip -p $db_port -a $password scan $1 count $cnt > scan_tmp_resultnew_cursor=`sed -n '1p' scan_tmp_result`sed -n '2,$p' scan_tmp_result > scan_result}
function get_keysize(){ cat $1 |while read line do key_size=`redis-cli -h $db_ip -p $db_port -a $password memory usage $line` echo $line $key_size >> key_sizes.txt done}
get_key $cursorget_keysize scan_result
while [ $cursor -ne $new_cursor ]do get_key $new_cursor get_keysize scan_resultdone
cat key_sizes.txt | sort -nrk2 | sed -n "1,$1p"rm -rf scan_tmp_resultrm -rf scan_resultrm -rf key_sizes.txt
テスト:
[redis@lxd-vm1 ~]$ sh get_bigkeys_top.sh 5
test2 12325
test 1589
c_9999 49
c_9998 49
c_9997 49

 
転載先:https://www.cnblogs.com/imdba/p/10167803.html