String | 简单动态字符串 |
List | 双向链表,压缩列表 |
Hash | 压缩列表,哈希表 |
SortedSet | 压缩列表,跳表 |
Set | 哈希表,整数数组 |
一、Redis整体结构
二、Redis解决Hash冲突的办法:(链表)
三、链表的瓶颈问题:(hash 冲突过多,链表过长导致时间复杂度由o(1)-> o(n)) ,解决方案渐近式rehash。
使用两个哈希桶,如Hash表1和Hash表2。主要步骤如下:
1Hash表1扩容前,正常接受请求并写入Hash表1.
2Hash表1需要扩容。每接受一个请求,从Hash表一第一个索引开始,顺带将这个索引位置上的所有enties拷贝到Hash表2,接受下一个请求时,从下个位置开始拷贝。