码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-31 01:14:41      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

1. 简介

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

技术分享

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

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

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


2. 实测

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

测试方式: 

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

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

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

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

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

以下是测试结果:

技术分享

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

关于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)


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

标签:

原文地址:http://my.oschina.net/justfairytale/blog/393830

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!