Hash底层数据结构
Hash 数据结构底层实现为一个字典( dict )哈希表,也是RedisBb用来存储K-V的数据结构,Redis内存数据库,最底层是一个redisDb;字典中的每一项,使用dictEntry ,代表KV键值;类似于HashMap中的键值对Entry。dict是一种用于维护key和value映射关系的数据结构,与很多编程语言中的Map类似。
关于Redis存储模型结构可以参考我的这篇博客:Redis第七讲 Redis存储模型详解
Dict的效率高表现在哪里?
因为dict/map实现了key和value的映射,通过key查询value是效率非常高的操作,时间复杂度是O(c),C是常数,在没有冲突/碰撞的情况下,可以达到O(1)。
dict本质上是为了解决算法中的查找问题(Searching),一般查找问题的解法分为两个大类:一个是基于各种平衡树,一个是基于哈希表。
- 平衡树,如二叉搜索树、红黑树,使用的是“二分思想”;如果需要实现排序,则可使用平衡树,如:用大顶堆实现TreeMap;
- 哈希表,如Java中的Map,Python中的字典dict,使用的是“映射思想”;
我们平常使用的各种Map或dict,大都是基于哈希表实现的。在不要求数据有序存储,且能保持较低的哈希值冲突概率的前提下