暂无图片
redis内存占用
我来答
分享
test
2024-01-15
redis内存占用

将redis中很多长度为200w的list拆分为一千个2千长度的list,内存使用率增长了1/2,请问下原因

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Mjwlan

将Redis中的一个长度为200万的列表拆分为1000个长度为2000的列表,导致内存使用率增加了一半的原因可能如下:

  1. 内存分配:在原始列表中,Redis会根据元素的大小分配足够的内存空间。当拆分为1000个列表时,每个列表都需要独立分配内存空间来容纳2000个元素。因此,整体上,Redis需要更多的内存来存储这些列表。

  2. 列表结构开销:每个列表都需要维护自己的列表头和节点结构,这些结构本身会占用一定的内存空间。因此,拆分为1000个列表会增加结构开销,从而导致整体内存使用率增加。

  3. Redis哈希表开销:Redis使用哈希表来存储键值对数据。当拆分为多个列表时,每个列表都需要有自己的哈希表来存储元素。每个哈希表都需要额外的内存来管理和维护索引结构,从而增加了内存开销。

总的来说,通过将一个长度为200万的列表拆分成1000个长度为2000的列表,导致了更多的内存开销。除了实际存储的数据外,还有额外的结构和索引开销,以支持每个列表的独立操作和管理。

需要注意的是,Redis的内存使用率增加一半并不意味着实际使用的内存翻倍。而是整体内存使用率的增加。具体的内存增长比例可能受到数据的特性、Redis的配置和其他因素的影响。

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
TiDB 插入慢怎么办?
回答 1
具体什么SQL,执行计划是什么,磁盘性能怎么样,插入慢的时候数据库的监控,建议去tidb社区去发帖。
常用数据库选型?
回答 3
数据库选型,归根结底需要根据需求来进行决策。一般而言,在进行数据库选型时,需要考虑以下方面。1)运维成本,包括监控告警是否完善、是否有备份恢复机制、升级和迁移的成本是否高、社区是否稳定、是否方便调优、
redis单机部署,配置了主从, 超时之后会变从吗?
回答 1
不会,首先单机部署不会超时,除非主自杀且都已开启Sentinel(sentinel.conf默认超时时间为30s),但是自杀了也完不成切换,因为Sentinel进程(progress)使用的流言协议(
数据库内出现由sequence 导致的大量row cache lock事件,观察内存不够用,数据库hang住了?
回答 3
已采纳
找出具体的sequence,增加cache数量,比如altersequenceseq1cache20
达梦数据库可以在非分区表上创建分区索引吗?
回答 2
达梦数据库中,分区索引主要是为了提升分区表的查询性能和I/O效率而设计的。分区索引是在分区表上创建的。对于非分区表,不建议创建分区索引,因为非分区表没有分区键,无法有效地利用分区索引的优势。
通过select object_type, object_name from user_objects where status = 'INVALID';查询出来失效的package 怎么去写一个定时任务查询失效的包并删除这些失效的包
回答 1
这样做比较危险,无效对象不代表就可以删除的,如果当时开发人员正在修改调试package,此时包是无效的,如果正好执行了定时任务删除的话,那就乌龙了!这些无效对象不影响数据库的运行,如果没有强迫症的话,
有没有好用的开源的监控数据库的系统推荐?
回答 1
PrometheusGrafana模板可在官网自行下载
plsql的tables里面可以看到表 但是写select语句查询不出来,这是什么原因?
回答 1
plsql刷新了吗?执行select语句报错了吗,那是什么错?还是说,select语句可以成功执行,但是没有返回记录?
Redis客户端一直连接超时怎么解决,同样配置在虚拟机可以,但是在云服务器上单机或者集群都显示超时
回答 1
是不是网络不通啊?telnet端口通不通?
想把redis里面的key 和数据复制到新key里怎么操作?
回答 2
MIGRATE命令了解下