Redis的五大数据类型实现原理
说明:
1. redis中所有数据结构都以唯一的key字符串作为名称,然后通过这个唯一的key来获取对应的value
2. 不同的数据类型数据结构差异就在于value的结构不一样
1. 字符串(string)
1)value的数据结构(数组)
1. 字符串value数据结构类似于数组,采用与分配容易空间来减少内存频繁分配
2. 当字符串长度小于1M时,扩容就是加倍现有空间
3. 如果字符串长度操作1M时,扩容时最多扩容1M空间,字符串最大长度为 512M
2)字符串的使用场景(缓存)
1. 字符串一个常见的用途是缓存用户信息,我们将用户信息使用JSON序列化成字符串
2. 取用户信息时会经过一次反序列化的过程
2. list(列表)
1)value的数据结构(双向链表)
1. 列表的数据结构是双向链表,这意味着插入和删除的时间复杂度是0(1),索引的时间复杂度位0(n)
2. 当列表弹出最后一个元素后,该数据结构会被自动删除,内存被回手
2)列表的使用场景(队列、栈)
3. hash(字典)
1)value的数据结构(HashMap)
1. redis中的字典也是HashMap(数组+列表)的二维结构
2. 不同的是redis的字典的值只能是字符串
2)hash的使用场景(缓存)
1. hash可以用来缓存用户信息,与字符串一次性全部序列化整个对象不同,hash可以对每个字段进行单独存储
2. 这样可以部分获取用户信息,节约网络流量
3. hash也有缺点,hash结构的存储消耗要高于单个字符串