redis的内部结构
时间: 2023-11-01 08:54:46 浏览: 48
Redis的内部结构是由以下几个重要的组件构成:
1. 字符串(String):是 Redis 最基本的数据结构,可以存储字符串、整数和浮点数。它们被用于实现其他高级数据结构,如列表、哈希表等。
2. 列表(List):是一个有序的字符串列表,可以在列表的两端进行元素的插入和删除操作。Redis 中的列表可以用来实现队列、栈等数据结构。
3. 哈希表(Hash):是一个键值对的集合,类似于其他编程语言中的字典或者关联数组。哈希表适用于存储对象,并可以快速地根据键查找值。
4. 集合(Set):是一个无序的字符串集合,不允许重复元素的存在。集合提供了判断元素是否存在、求交集、并集和差集等操作。
5. 有序集合(Sorted Set):类似于集合,但每个元素都关联着一个分数,用于排序和排名。有序集合可以按照分数范围进行检索,并支持根据分数进行排名。
除了以上基本数据结构外,Redis 还支持一些其他的数据结构,如位图、地理位置等。这些数据结构的底层实现使用了各种数据结构和算法,以实现高效的存储和查询性能。
相关问题
redis数据结构底层
Redis在底层使用了多种数据结构,包括链表、字典和跳跃表。链表是Redis自己构建的数据结构,因为C语言并没有内置链表结构。链表在Redis中被广泛应用,用于实现列表等数据类型。字典用于实现Redis中的键值对存储结构,它能够通过键快速地查找对应的值。跳跃表是一种用于有序集合键和集群节点内部数据结构的数据结构,它能够提供较快的查找和插入操作。除了这些数据结构,Redis还使用redisObject来表示这些数据结构的底层实现,redisObject有三个重要的属性,分别是type、encoding、ptr。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Redis的六种底层数据结构](https://blog.csdn.net/A12115419/article/details/122198783)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [redis数据结构的底层实现](https://blog.csdn.net/qq_43216019/article/details/129225687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
redis的存储结构
redis的存储结构从外层往内层依次是redisServer、redisDb、dict、dictht、dictEntry。redis的Db默认情况下有16个,每个redisDb内部包含一个dict的数据结构。redis的dict内部包含dictht的数组,数组个数为2,主要用于hash扩容使用。dictht内部包含dictEntry的数组,可以理解就是hash桶,然后使用链地址法解决冲突。另外,redisObj是redis中最原子的数据结构,它占据16字节大小,包含类型、存储格式、LRU信息、引用次数和指向对象值的指针等属性。