redis key的内存使用查看

本文介绍了在CentOS7.8系统上使用Redis的key内存占用监控方法,包括登录Redis、查看单个key和所有key的内存使用,以及如何通过Python3安装相关工具(如rdbtools和python-lzf)来管理和分析大key。

查看reids的key内存占用命令

系统:centos 7.8

python3:3.6.8

1、查看redis某key的内存使用

redis-cli -h 本机ip -a password      #登陆redis,如果有指定端口,可加-p参数
info                                                #查看redis详细信息
select 1                                         #选择1库(根据实际情况来)
memory usage keyname1            #查看keyname1的内存使用

2、查看redis所有key的内存使用

2.1、安装依赖包

yum install gcc python3-devel -y

2.2、安装get-pip.py

python3 --version                             #查看Python3版本

#下载get-pip.py包(优先使用第一条)

wget https://bootstrap.pypa.io/pip/get-pip.py

或者

wget https://bootstrap.pypa.io/pip/3.6/get-pip.py

python3 get-pip.py                            #安装get-pip.py

2.3、安装rdbtools

pip install rdkeybtools

2.4、安装python-lzf

pip install -i Simple Index python-lzf

2.5、文件输出

进入dump.rdb所在的目录,将所有大于10KB的key输出到一个csv文件

rdb dump.rdb -c memory --bytes 10240 -f redis-memory.csv

### 方法一:使用 `MEMORY USAGE` 命令 可以使用 `MEMORY USAGE` 命令来获取某个 key内存占用情况。例如,执行 `MEMORY USAGE mykey` 命令,就可以得到 `mykey` 所占用内存大小。通过遍历所有的 key,使用该命令可以找出内存占用较大的大 key [^2]。 ### 方法二:使用 `redis-cli --bigkeys` 命令 可以使用 `redis-cli --bigkeys` 命令快速扫描 Redis 中的大 key,并给出不同数据类型中最大的 key 信息。例如,执行 `redis-cli --bigkeys` 命令后,会输出类似如下的结果: ``` # Scanning the entire keyspace to find biggest keys as well as # average sizes per key type. You can use -i 0.01 to sleep 10 ms # per 100 SCAN commands (not usually needed). [00.00%] Biggest string found so far 'big_string_key' with 10240 bytes [00.00%] Biggest hash found so far 'big_hash_key' with 100 fields [00.00%] Biggest list found so far 'big_list_key' with 500 elements [00.00%] Biggest set found so far 'big_set_key' with 200 members [00.00%] Biggest zset found so far 'big_zset_key' with 300 members ``` 此命令会扫描整个键空间,找到最大的键并输出相关信息 [^2]。 ### 方法三:结合脚本遍历所有键 可以编写脚本遍历 Redis 中的所有键,并记录内存占用最大的键。以下是一个 Python 示例脚本: ```python import redis # 连接到 Redis 服务器 r = redis.StrictRedis(host='localhost', port=6379, db=0) # 获取所有键 keys = r.keys('*') # 初始化最大内存和最大键 max_memory = 0 max_key = None # 遍历所有键,查找内存占用最大的键 for key in keys: # 获取键的内存使用情况 memory_usage = r.memory_usage(key) if memory_usage is not None and memory_usage > max_memory: max_memory = memory_usage max_key = key # 输出内存占用最大的键和其内存使用情况 print(f"Key with maximum memory usage: {max_key}, Memory Usage: {max_memory} bytes") ``` ### 方法四:使用 `MEMORY STATS` 命令 `MEMORY STATS` 命令可以显示内存使用详情,虽然它不会直接告诉你哪个键占用内存最多,但可以帮助了解 Redis 的整体内存使用情况 [^1]。 ### 方法五:使用 `MEMORY DOCTOR` 命令 `MEMORY DOCTOR` 命令提供了对 Redis 内存使用的更好可观测性。例如,执行 `MEMORY DOCTOR` 命令后,会输出类似如下的结果: ``` 127.0.0.1:6379> memory doctor Hi Sam, I can't find any memory issue in your instance. I can only account for what occurs on this base. ``` 虽然该命令主要用于诊断内存问题,但它可以帮助了解 Redis内存使用情况 [^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色O_O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值