Redis中统计各种数据大小的方法
如果 MySQL 数据库比较大的话,我们很容易就能查出是哪些表占用的空间;不过如果 Redis 内存比较大的话,我们就不太容易查出是哪些(种)键占用的空间了。
有一些工具能够提供必要的帮助,比如 redis-rdb-tools 可以直接分析 RDB 文件来生成报告,可惜它不能百分百实现我的需求,而我也不想在它的基础上二次开发。实际上开发一个专用工具非常简单,利用 SCAN 和 DEBUG 等命令,没多少行代码就能实现:
php$patterns = array(
foo:.+ ,
bar:.+ ,
.+ ,
);
$redis = new Redis();
$redis- setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$result = array_fill_keys($patterns, 0);
while ($keys = $redis- scan($it, $match = * , $count = 1000)) {
foreach ($keys as $key) {
foreach ($patterns as $pattern) {
if (preg_match( /^{$pattern}$/ , $key)) {
if ($v = $redis- debug($key)) {
$result[$pattern] += $v[ serializedlength ];
}
break;
}
}
}
}
var_dump($result);
当然,前提是你需要提前总结出可能的键模式,简单但不严谨的方法是 MONITOR:
shell /path/to/redis-cli monitor |awk -F $2 ~ ADD|SET|STORE|PUSH {print $4}
此外,需要注意的是:因为 DEBUG 返回的 serializedlength 是序列化后的长度,所以最终计算的值小于实际内存占用,但考虑到相对大小依然是有参考意义的。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Redis中统计各种数据大小的方法
相关文章
- Redis重新获取丢失数据的方法(redis恢复数据)
- Redis数据库:强劲有力的存储策略(redis数据库使用)
- 方法使用Redis客户端的简明步骤(redis客户端使用)
- 基于Redis的高性能内存数据库(redis内存数据库)
- Redis应用于抢单场景,提高交易效率(redis抢单)
- Redis安装目录详解:了解Redis在哪里安装以及如何使用(redis的安装目录)
- Redis 优化:写入磁盘性能分析(redis 写入磁盘)
- 利用Redis轻松实现PV统计(redis pv 统计)
- 统计Redis的连接数量一步一步来查看(怎么查看redis有多少连接)
- 从Redis中取出数据的方法(怎么从redis取出数据)
- 微擎Redis坑人无限被困在开启无果中(微擎redis开启不了)
- 统计分析Redis中大Key的性能指标(统计redis中大key)
- 简单搭建Redis服务轻松上手(简易redis)
- 开源之旅深入浅出Redis源代码(源代码redis)
- 利用简便方法实现Redis Key值的更新(更新redis key值)
- 兄弟连Redis实战之路(兄弟连redis 实战)
- 精通Redis,如何应对面试考题(redis面试会问到什么)
- 提升Redis集群QPS的方法研究(redis集群的qps)
- Redis集群实现持久化方法与实现(redis集群持久化方式)
- Redis加大Key限制保障系统安全(redis限制key)
- 妙用Redis优雅配置防火墙(redis防火墙配置文件)
- 红色舞台上的卡夫卡精致的Redis队列(redis队列和卡夫卡)
- Redis重启短暂停歇,精彩继续(redis 重启 时间)
- 使用Redis连接查询数据的简单方法(redis 连接查询数据)
- 分析Redis过期策略的六种不同方法(redis过期策略六种)
- Redis专业软件开发者的首选(redis软件生产商)
- Redis实现路段车流量统计(redis 车流量统计)
- 排查Redis读超时的解决方案(redis读超时问题排查)
- 限制使用Redis控制数据量大小(redis设置size)
- Redis实现获取记录总数的方法(redis获取记录总数)