2、数据结构
大约 1 分钟数据库原创面试题Redis程序厨
2.数据结构
2.0 5 种数据表现形式
String字符串(主要用于常规计数,粉丝数等)
Hash散列(用户信息,商品信息等)
List 列表(消息列表,粉丝列表等)
Set 集合(共同好友,共同关注等)
SortedSet有序集合(礼物排行榜等)
以上是键值对的保存形式
推荐阅读:https://www.runoob.com/redis/redis-data-types.html
2.1 6 种底层数据结构
共有六种
简单动态字符串
双向链表
压缩列表
哈希表
跳表
整数数组

简单动态字符串
SDS可以直接获取到字符串的长度,时间复杂度为O(1)
会有空间预分配,这样可以减少分配空间的次数,然后长度减少时,不会改变数据结构的内存,会将减少部位标志为可用。
C语言是以 /0结尾,Redis 以长度进行结尾,避免存储字符串出现问题
可以保存文本和二进制数据
双向链表
压缩列表
压缩原理

原理很简单,因为数组的内存是连续分配的,如果我们给所有的value分配相同的内存大小,这样的话则会造成大量的内存浪费,所以我们对每个value 的内存进行存储时,先计算出其大小,然后通过大小为其分配内存。
这个也是高频考点
哈希表
跳表
推荐阅读:https://zhuanlan.zhihu.com/p/53975333?ivk_sa=1024320u
整数数组
