转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/125.html?1455853369
如果 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 是序列化后的长度,所以最终计算的值小于实际内存占用,但考虑到相对大小依然是有参考意义的。
分享到:
相关推荐
它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这使得Redis在各种应用场景中表现出色。RedisDesktopManager是用于图形化管理Redis服务器的工具,方便用户进行数据操作和监控。 Redis的主要特性包括...
* 持久化适用场景:数据可以以key/value的形式存储,数据需要持久化,数据量很大,并且有较大的增长可能性,单个数据大小不是很大,一般在KB级别,数据的读写比例较高。 Tair与Redis比较 Tair和Redis都是分布式...
它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,适用于处理各种数据存储需求。本资源提供的“redis客户端免安装版”是一个便捷的Redis管理工具,无需安装过程,解压后即可直接运行,方便用户快速地...
在需要统计某一时间段内去重后的数据数量时,Redis的`Set`数据结构提供了一个简洁高效的解决方案。 - **实现步骤**: - 将所有相关数据添加到`Set`中。 - 使用`SCARD`命令获取当前`Set`的大小,即为去重后的数据...
5. **数据操作**:支持对Redis的各种数据结构(如字符串、哈希、列表、集合、有序集合)进行添加、修改、删除等操作。 6. **命令行接口**:内置了命令行工具,用户可以直接输入Redis命令执行,方便调试和测试。 7....
除此之外,Redis对于各种内部数据结构的精妙设计也是其性能卓越的关键因素之一。本文将重点探讨Redis中最常用的String数据结构——SDS(Simple Dynamic String),并揭示其背后的设计理念与优化策略。 #### 位操作...
- **RDB(Redis Database Persistence)**:定期将内存中的数据快照保存到硬盘上,提供灾难恢复能力。 - **AOF(Append Only File)**:记录每次写操作的日志,以追加方式写入文件,保证数据不丢失。 4. **Redis...
1. **实时数据浏览**:RedisDesktop 允许用户实时查看和编辑存储在 Redis 服务器中的键值对。你可以通过简单的界面来浏览、搜索、添加、修改或删除键,这对于调试和测试非常有帮助。 2. **多服务器管理**:该工具...
Redis作为运行在内存中的数据结构服务器,其重要性在开发和运维领域日益凸显。本实践指南针对Redis的开发和运维提供了详细的操作指南,内容覆盖了从基础的数据操作到复杂的系统架构设计,适用于Redis开发和运维人员...
Redis的一大特点是其运行在内存中,提供了极高的读写速度,但同时这也意味着数据量受到物理内存的限制。 在Linux环境下部署Redis,首先要确保系统中安装了Redis服务器。通常,可以通过包管理器(如apt-get或yum)...
在PHP5.4中使用Redis,可以实现各种功能,例如: 1. **数据存储**:Redis支持字符串、哈希、列表、集合和有序集合等多种数据结构,可以方便地存储和操作数据。 2. **缓存**:利用Redis的高读取速度,可以将常用数据...
Redis 5.0 引入了 Stream 数据类型,它是一种新的持久化数据结构,用于处理时序数据。Stream 类似于日志,允许应用程序记录一系列有序事件。每个事件由一个唯一的 ID(XID)和一组字段(field-value 对)组成,可以...
4. 数据导入导出:可以将Redis中的数据导出为JSON、CSV、XML等格式,便于数据分析或备份;同时,也可以将这些文件导入到Redis中,快速填充测试数据。 三、集群模式下的Redis管理 1. 集群配置:对于集群模式,Redis...
7. **可视化统计**:提供键的统计信息,如键的数量、大小等,有助于监控数据库状态。 8. **安全性**:支持SSL加密连接,确保数据传输的安全性。 9. **多语言支持**:界面可切换为多种语言,包括中文,方便不同地区...
- Redis支持持久化,可以将内存中的数据定期保存到磁盘,以防止数据丢失。 2. Redis常用命令: - SET与GET:用于设置和获取键值。 - LPUSH/RPUSH与LPOP/RPOP:在列表两端添加或删除元素。 - HSET/HGET:操作...
6. **可视化统计**:该工具提供关于键值大小、内存使用情况等的可视化统计,帮助用户监控数据库状态。 7. **命令行支持**:虽然主要以GUI形式操作,但工具也提供了命令行输入框,方便执行自定义的Redis命令。 8. *...
- 内存存储:Redis默认将所有数据存储在内存中,提供极快的读写速度,但同时也需要注意内存管理。 - 持久化:为了防止数据丢失,Redis支持RDB(快照)和AOF(追加日志)两种持久化方式,确保数据安全。 - 主从...
它的数据类型包括字符串、哈希、列表、集合和有序集合,这些数据结构使得Redis能够处理各种复杂的数据操作。 在“基于redis实现昨日今日浏览量统计”这个案例中,我们可以假设每个浏览行为被表示为一个独立的事件,...