我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis中统计各种数据大小的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 是序列化后的长度,所以最终计算的值小于实际内存占用,但考虑到相对大小依然是有参考意义的。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis中统计各种数据大小的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis中统计各种数据大小的方法

如果 MySQL 数据库比较大的话,我们很容易就能查出是哪些表占用的空间;不过如果 Redis 内存比较大的话,我们就不太容易查出是哪些(种)键占用的空间了。 有一些工具能够提供必要的帮助,比如 redis-rdb-tools 可以直接分析
2022-06-04

Java连接各种数据库的方法

本篇内容介绍了“Java连接各种数据库的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JDBC里统一的使用方法:Class.for(jd
2023-06-17

Python统计词频的几种方法小结

本文主要介绍了Python统计词频的几种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-01

oracle怎么统计表的数据量大小

要统计Oracle表的数据量大小,可以使用以下方法:1、使用Oracle提供的dba_segments视图查询表占用的空间大小。例如,执行以下SQL语句可以查看指定表所占用的空间大小:SELECT segment_name, segme
oracle怎么统计表的数据量大小
2024-04-09

MySQL大量数据插入各种方法性能分析与比较

不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入。插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方法的选择。 插入分析 MySQL中插入一
2022-05-30

mysql中删除数据的四种方法小结

目录写在前面 方法介绍1. DELETE语句示例: 2. DROP TABLE语句:3. TRUNCATE TABLE示例:4. 使用外键约束:示例: 方法优缺点1. DELETE语句:2. TRUNCATE TABLE语句:3. DR
2023-10-11

使用Python统计字符串中各种字符的个数

Python 统计字符串中各种字符出现的次数一、提出问题随机输入一段字符串,包括数字,英文,空格,其他字符,统计这些字符在其中出现的次数二、难点提示思路:从键盘随机输入一段字符串,然后循环遍历字符串,通过循环字符串中的每一个字符,统计各类字
2023-06-01

redis删除数据的方法有哪几种

DEL key [key …]: 删除指定的key及其关联的值。FLUSHDB: 删除当前数据库中的所有key。FLUSHALL: 删除所有数据库中的所有key。UNLINK key [key …]: 异步删除指定的key及其关联的值,不阻
redis删除数据的方法有哪几种
2024-04-09

redis的五种数据类型使用方法

redis 提供五种数据类型:字符串:存储单个字符串值。哈希表:存储键值对,用于对象或映射。列表:存储有序元素序列,用于数组或队列。集合:存储不重复元素,用于唯一值或标签。有序集合:存储带分数元素,按分数从低到高排序。Redis 五种数据类
redis的五种数据类型使用方法
2024-04-19

dede中统计栏目文章数的两种方法

方法一: 涉及到文件:include/common.func.php 在include/common.func.php最下面也就是?>前加入以下代码 复制代码代码如下: function GetTotalArc($tid){ global
2022-06-12

Redis实现唯一计数的3种方法分享

唯一计数是网站系统中十分常见的一个功能特性,例如网站需要统计每天访问的人数 unique visitor (也就是 UV)。计数问题很常见,但解决起来可能十分复杂:一是需要计数的量可能很大,比如大型的站点每天有数百万的人访问,数据量相当大;
2022-06-04

统计MySQL中某数据库硬盘占用量大小

参考资料统计MySQL数据库硬盘占用量大小
统计MySQL中某数据库硬盘占用量大小
2018-10-22

redis大数据迁移的方法是什么

Redis大数据迁移的方法包括以下几种:1. RDB文件迁移:RDB文件是Redis数据库的快照,可以通过将RDB文件复制到新的服务器上来实现数据迁移。首先,在源服务器上执行SAVE命令生成RDB文件,然后将该文件复制到目标服务器上,并在目
2023-09-11

redis大数据迁移的方法是什么

Redis大数据迁移:方法与最佳实践Redis大数据迁移旨在将数据从一个实例或集群转移到另一个。该过程的具体方法取决于迁移规模、数据结构和可用性要求。常见的迁移方法包括:增量同步:使用RDB快照和AOF重写日志进行数据传输。全量复制:使用Redis的复制机制进行数据同步。DUMP/RESTORE:将特定键或键模式导出到文件并导入到目标服务器。RedisSentinel:无中断迁移,通过自动化故障转移实现。RedisCluster:支持自动resharding,简化数据迁移。选择合适的方法至关重要,需考虑数
redis大数据迁移的方法是什么
2024-04-09

编程热搜

目录