redis里显示key大小的shell脚本


redis里可以显示key大小的shell脚本,很方便的定位redis里有哪些大key。

脚本内容如下:


# 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 %sn”,sum/x,hum[x]; break; } } if (sum


}




#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 $kn”; 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%sn” “$hsize” “$key”;


fi


done




脚本说明:


扫描哪个db,修改脚本里对应redis_cmd的位置,加入 -n选项,例如:




# redis-cli info keyspace | grep db10

db10:keys=6,expires=0,avg_ttl=0

显示db10的里的6个key的大小:

将redis_cmd=’redis-cli’改为redis_cmd=’redis-cli -n 10′


运行:


# ./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

相关推荐: 多款OPPO手机喜提ColorOS 6,网友:原来绿厂系统做得这么出色

手机市场竞争的激烈性,硬件已经进入到高度同化的阶段,让很多手机厂商将软件上的创新作为一个新的发力点。国内就有很多具有鲜明特点的智能机系统。例如:华为EMUI、小米的MIUI还有OPPO 的color,近日发布的OPPO Reno 2就搭载了ColorOS 6系…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 12/31 21:04
下一篇 12/31 21:04