您好,登錄后才能下訂單哦!
redis里可以顯示key大小的shell腳本,很方便的定位redis里有哪些大key。
腳本內(nèi)容如下:
# cat redis-print-keysize.sh
#!/usr/bin/env bash
human_size() {
awk -v sum="$1" ' BEGIN {hum[1024^3]="Gb"; hum[1024^2]="Mb"; hum[1024]="Kb"; for (x=1024^3; x>=1024; x/=1024) { if (sum>=x) { printf "%.2f %s\n",sum/x,hum[x]; break; } } if (sum<1024) print "1kb"; } '
}
#redis_cmd='redis-cli'
redis_cmd='redis-cli -n 10'
# get keys and sizes
for k in `$redis_cmd keys "*"`; do key_size_bytes=`$redis_cmd debug object $k | perl -wpe 's/^.+serializedlength:([\d]+).+$/$1/g'`; size_key_list="$size_key_list$key_size_bytes $k\n"; done
# sort the list
sorted_key_list=`echo -e "$size_key_list" | sort -n`
# print out the list with human readable sizes
echo -e "$sorted_key_list" | while read l; do
if [[ -n "$l" ]]; then
size=`echo $l | perl -wpe 's/^(\d+).+/$1/g'`; hsize=`human_size "$size"`; key=`echo $l | perl -wpe 's/^\d+(.+)/$1/g'`; printf "%-10s%s\n" "$hsize" "$key";
fi
done
腳本說(shuō)明:
掃描哪個(gè)db,修改腳本里對(duì)應(yīng)redis_cmd的位置,加入 -n選項(xiàng),例如:
# redis-cli info keyspace | grep db10
db10:keys=6,expires=0,avg_ttl=0
顯示db10的里的6個(gè)key的大小:
將redis_cmd='redis-cli'改為redis_cmd='redis-cli -n 10'
運(yùn)行:
# ./redis_key_sizes.sh
1kb prod_domain_error
1kb prod_solr_error
200.86 Kb test_buffer_error
241.55 Kb prod_comment_error
19.20 Mb prod_ref_15_error
70.55 Mb prod_ref_151_error
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。