文档章节

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

苗永超
 苗永超
发布于 2015/03/30 23:24
字数 445
阅读 1095
收藏 10

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)


© 著作权归作者所有

共有 人打赏支持
苗永超
粉丝 15
博文 57
码字总数 14075
作品 0
海淀
后端工程师
私信 提问
Redis底部的几种存储结构(sds、dict、ziplist、intset、skiplist)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011734144/article/details/86086749 首先这里是原文: https://mp.weixin.qq.com/s?biz=MzA4NTg1MjM0Mg==&...

田野上的希望
01/08
0
0
可能是目前最详细的Redis内存模型及应用解读

Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型:字符串、哈希...

编程迷思
2018/07/16
0
0
深入学习Redis(1):Redis内存模型

前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符串...

编程迷思
2018/03/27
0
0
深入了解一下Redis的内存模型!

一前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符...

Java高级架构
2018/05/31
0
0
深入学习 Redis(1):Redis 内存模型

原文出处:编程迷思 前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的...

编程迷思
2018/03/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
2
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
3
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
2
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
2
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部