Redis zipmap内存布局和扩展收缩分析
发布时间:2017-01-08 10:30 所属栏目:61 来源:千石
导读:Redis被称为key/value应用中的瑞士军刀,除了其丰富的数据结构支持,更重要的是高效的内存使用,分析源码可以发现作者使用每一个byte都精打细算。在hashtable实现中,Redis引入了zipmap数据结构,保证在hashtable刚创建以及元素较少时,用更少的内存来存储,
【技术】Redis被称为key/value应用中的瑞士军刀,除了其丰富的数据结构支持,更重要的是高效的内存使用,分析源码可以发现作者使用每一个byte都精打细算。在hashtable实现中,Redis引入了zipmap数据结构,保证在hashtable刚创建以及元素较少时,用更少的内存来存储,同时对查询的效率也不会受太大的影响。下面就以源码和例子结合的方式来分析一下zipmap的内存布局。 先来看一下zipmap提供的和存储相关的3个API: zipmapNew:创建一个zipmap字符串。zipmap创建时只有2个字节,后面会随着set和delete操作动态扩展和收缩。 zipmapSet: 加入新的key/value或者修改zipmap中已有key对应的value。 zipmapDel:从zipmap中删除key/value。 下面给出一段伪代码并分析其内存布局的变化,如下图: (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读