RedisDb
Redis服务器上可以有多个Redis数据库。
每个数据库在底层都是一个RedisDb对象。这个对象的一个重要属性是dict。
dict是一个指针,指向了字典(dict)对象。
字典对象
有什么用?
存储键值对。
其中,键必须是字符串对象,值可以是任意类型的对象。
是怎么实现的?
用哈希表实现。
哈希表在底层由多个桶组成,每个桶都是一个链表。相同哈希值的元素(指键值对)会被放到一个桶中。
对Redis对象的增删改查,在底层是怎么实现的?
增
因为字典对象基于哈希表实现,添加元素时根据元素的键的哈希值定位到对应的桶,然后将元素作为一个dictEntry结构插入桶的链表中。这个 dictEntry 结构体包含了指向键的指针和指向值的指针。
对应的时间复杂度为O(1)。
删
根据元素的键的哈希值找到对应的桶,然后在桶的链表中查找dictEntry结构体并删除。
对应时间复杂度为O(1)。
改
根据元素的键的哈希值找到对应的桶,然后在桶的链表中查找dictEntry 结构体并更新。
对应的时间复杂度为O(1)。
查
根据元素的键的哈希值找到对应的桶,然后在桶的链表中查找dictEntry 结构体。
对应的时间复杂度为O(1)。