Redis ZipMap 数据结构和源码剖析
在redis中,使用 hashtable 实现了 set、sorted set、hash 结构。而单纯的 hashtable ,因为是一次分配一大块内存,所以在存储少量数据时会存在空间利用率很低的问题。
redis 是内存数据库,而内存是昂贵的,所以需要尽量避免内存的浪费,所以有了 zipmap 结构。
zipmap?
我们通过 what、why、how 来对 zipmap 进行全面的认识
what?(它是什么)
ZipMap 实质上就是一个特殊格式的字符串。
why?(为什么要用它)
因为redis是个内存数据库,要尽量避免内存浪费
how?(它是怎么实现的)
zipmap 是用连续内存保存 key-value 对的结构,查询时是依次遍列每个 key-value 对,直到查到为止。其存储结构如下所示:
