redis list 不同编码类型造成内存占用及运行效率的差别

1. 简介

总所周知,redis中的list有两种编码结构,ziplist和linkedlist。两种编码结构的切换由下面的配置信息决定:

230058_WOW2_167206.png

以上两个配置是默认的配置。

针对以上的配置,当列表对象保存的所有字符串元素的长度都小于64字节,并且列表对象保存的元素数量小于512时,list使用ziplist编码;不能满足这两种情况就是用linkedlist编码。

ziplist的特点是节省内存,linkedlist是一个双向列表,特点就是插入速度快,但是占内存。


2. 实测

正式开始我今天主要想发表的东西,虽不是什么了不起的东西,但是是我认认真真测试出来的结果,留个纪念吧。

测试方式: 

a. 一个key,分别对其进行rpush、lrange、ltrim三种操作;

b. rpush数据为80W个整型,每插入10W条记录记录一次此时的平均插入速率;

c. 每隔10W条记录进行一次lrange,查看占用时间;            

d. 全部数据更新成功后,开始测试ltrim;

e. 分两种编码结构进行测试,作对比;

以下是测试结果:

232231_MBVN_167206.png

表格不好粘贴,就直接截图了

关于ziplist和linkedlist的内存占用,80W的数据,ziplist占用内存不到5M,而linked占用内存为37M+,内存占用相差7倍多。


3. 测试机器配置(非专业介绍,凑合看吧):

cpu: 24核心 Intel(R) Xeon(R) CPU E5-2643 v2 @ 3.50GHz

内存:128G

系统: CentOS release 6.6 (Final)


转载于:https://my.oschina.net/justfairytale/blog/393830

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值