
既然要把数据放到内存中,就需要提供索引数据的方式,常见的索引实现技术有:Hash表,B+树,字典树等。MySQL中的索引是通过B+树实现的。而Redis作为KV内存数据库,其是采用哈希表来实现索引的。
为了实现键值快速访问,Redis使用了个哈希表来存储所有的键值对。
在内存中的布局如下:

哈希桶中存储entry元素,entry元素包含了key和value指针,指向实际的key和value内容。
key指向的是字符串,value指向的是实际的各种redis数据结构。
这种结构下,只要哈希冲突不多,那么寻找kv键值对的效率就是很高的,而redis与Memcached相比,最重要的亮点就是value中提供的各种数据结构。这些数据结构的实现决定了执行各种操作命令获取数据的性能。
我们接下来看看这些数据结构。