redis内存语义分析

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

内存语义分析

测试环境redis服务出现异常, 为了排查错误对redis内存进行了分析.

分析redis内存

1) 安装redis-rdb-tools: Linux下执行: pip install rdbtools(先安装python-pip才能使用pip命令)

2) 找到redis的dump.rdb文件
3) 执行rdb -c memory dump.rdb > memory.csv
生成的memory.csv就是分析文件了.
附:
dump.rdb文件是redis快照的结果,也就是将数据库中的数据保存到硬盘,防止redis意外重启后数据丢失的。redis每次启动时,都会先去找这个文件,将里面的数据导入数据库中,如果没有找到这个文件就会重新建立一个,如果找到了,但是被清空了,对不起,你的数据也就丢失了。

  • dump文件保存路径请见redis.conf:
    # The filename where to dump the DB
    dbfilename dump.rdb

    # The working directory.
    #
    # The DB will be written inside this directory, with the filename specified
    # above using the 'dbfilename' configuration directive.
    #
    # The Append Only File will also be created inside this directory.
    #
    # Note that you must specify a directory here, not a file name.
    dir /var/lib/redis

查看分析结果

database,type,key,size_in_bytes,encoding,num_elements,len_largest_element
0,string,cache_area_cityOfProvince_34,168,string,81,81
0,string,cache_hour_transaction_num_05-10,2672,string,2205,2205
0,string,cache_banner_app_home,384,string,291,291
0,string,cache_hour_transaction_num_05-27,1648,string,1393,1393
0,string,cache_hour_transaction_num_05-31,368,string,233,233
0,string,cache_hour_transaction_num_06-05,880,string,639,639
0,string,cache_day_play_count_05-19,1384,string,1255,1255
0,list,logstash,3319374989,quicklist,7660698,34240
0,list,watch_order_48_615,189,quicklist,1,32
...

字段含义依次为: 数据库ID,数据类型,key,内存使用量(byte),编码。内存使用量包含key、value和其他值。

分析可得, key为'logstash'的内容最大, 为3319374989字节(3165.6Mb); 远超其他正常值, 定位原因.

参考链接:https://yq.aliyun.com/articles/62899

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
NoSQL Redis
12- Redis的内存用完了会发生什么?
当Redis内存满时,写操作将失败,但读操作仍可进行。系统可配置内存淘汰策略,在达到最大内存时自动删除旧数据。
39 6
|
14天前
|
缓存 NoSQL 算法
【Redis系列笔记】内存淘汰及过期删除
Redis是一个内存键值对数据库,所以对于内存的管理尤为重要。Redis内部对于内存的管理主要包含两个方向,过期删除策略和数据淘汰策略。内存淘汰策略指在Redis内存使用达到一定阈值的时候,执行某种策略释放内存空间,以便于接收新的数据。数据过期删除策略是指在数据的有效时间到期后,如何从内存中删除这些数据的规则。
34 0
|
15天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis内存淘汰(内存过期)策略
Redis入门到通关之Redis内存淘汰(内存过期)策略
30 3
|
1月前
|
NoSQL 安全 Redis
redis内存限制与淘汰策略
Redis内存管理包括限制和淘汰策略。`maxmemory`配置参数决定内存上限,无设置时64位系统默认不限制,可能导致系统资源耗尽,生产环境建议设定合理值。当内存满时,未设置淘汰策略会导致写入错误。Redis提供8种淘汰策略,如LRU(最近最少使用)和LFU(最不经常使用),以及随机或基于过期时间的删除。需根据数据重要性、访问频率和一致性选择合适策略。
283 0
|
1月前
|
存储 缓存 NoSQL
Redis 服务器指南:高性能内存数据库的完整使用指南
Redis 服务器指南:高性能内存数据库的完整使用指南
|
1月前
|
存储 缓存 NoSQL
Redis的内存淘汰策略是什么?
【4月更文挑战第2天】Redis内存淘汰策略在内存满时,通过删除旧数据为新数据腾空间。策略包括:volatile-lru/LFU(基于LRU/LFU算法淘汰有过期时间的键),volatile-random/ttl(随机/按TTL淘汰),allkeys-lru/LFU(所有键的LRU/LFU),allkeys-random(随机淘汰所有键),以及noeviction(不淘汰,返回错误)。选择策略要考虑访问模式、数据重要性和性能需求。
|
2月前
|
SQL 运维 NoSQL
【Redis 故障排查】「连接失败问题排查和解决」带你总体分析CPU及内存的使用率高问题排查指南及方案
【Redis 故障排查】「连接失败问题排查和解决」带你总体分析CPU及内存的使用率高问题排查指南及方案
39 0
|
2月前
|
缓存 NoSQL Redis
在Python Web开发过程中:数据库与缓存,除了Redis是内存数据库以外,还有哪些原因使其运行速度快?
Redis在Python Web开发中快速的原因:内存存储、多样化数据结构(如字符串、哈希、列表等)简化数据模型,单线程处理提高效率,结合非阻塞I/O;RDB和AOF提供持久化保障;TCP+二进制协议减少网络开销;管道技术提升通信效率。这些设计使Redis能高效处理高并发请求。
19 3
|
2月前
|
存储 缓存 NoSQL
Redis内存数据满了导致宕机
Redis内存数据满了导致宕机
19 0