极客讲堂 - 数据结构与算法之美 笔记七 - 实战篇

52 | 算法实战(一):剖析Redis常用数据类型对应的数据结构

1. Redis 是一种键值(Key-Value)数据库。相对于关系型数据库(比如 MySQL),Redis 也被叫作非关系型数据库。

2. Redis 中,的数据类型是字符串,值的类型有 字符串列表字典集合有序集合。

2.1 列表

     对应两种实现方法:一种是压缩列表(ziplist),另一种是双向循环链表

(1) 压缩列表是 Redis 自己设计的一种数据存储结构。类似数组,通过一片连续的内存空间来存储数据。

     但它的结构是 数量+数据1长度+数据1内容+数据2长度+数据2内容的方式存储。

     节省空间,允许存储不同的数据结构,但数据量比较大时,就不适用了。(数据个数少于 512,单数据小于64字节)

(2) 双向循环链表是一个list结构,包含首尾指针,以及数据长度信息。

2.2 字典   用来存储一组数据对

    对应两种实现方法:一种是压缩列表,另一种是散列表

    存储的数据量比较小的情况下使用压缩列表,否则使用散列表

2.3 集合(set)  用来存储一组不重复的数据

    对应两种实现方法:一种是有序数组​​​​​​​,另一种是散列表​​​​​​​

(1) 当 存储的数据都是整数 且 存储的数据元素个数不超过 512个,就采用有序数组。

(2) 否则使用散列表。

2.4 有序集合(sortedset)   用来存储一组数据,并且每个数据会附带一个得分

    对应两种实现方法:一种是压缩列表,另一种是跳表

3. 数据结构持久化   即把数据存储到硬盘,有两个方式:

(1) 清除原有的存储结构,只将数据存储到磁盘中。  

      节省空间,但耗费时间大。

(2) 保留原来的存储格式,将数据按照原有的格式存储在磁盘中。

      节省时间,但耗费空间大。

猜你喜欢

转载自blog.csdn.net/san_77227487/article/details/86665981