数据结构与算法-Redis中的数据结构

主要介绍下Redis中数据结构相关的知识点,分别是List,Set,SortSet,Hash

Redis是内存数据库(也有持久化功能)

List

zipList:

  • 保存的单个数据都小于64字节;
  • 存储的元素不超过512个;

    其他情况会采用双向循环链表,优点:便于处理从尾向前遍历,以及方便删除修改操作。

Hash

zipList:

  • 保存的单个数据都小于64字节;
  • 存储的元素不超过512个;

    其他情况会采用散列表,默认情况下装载因子大于1时候会进行库容,小于0.1时候会进行缩容,扩容方案采用延迟扩容的方案

Set

有序数组:

  • 保存的单个数据都是整数;
  • 存储的元素不超过512个;

    其他情况会采用散列表

SortSet

zipList:

  • 保存的单个数据都小于64字节;
  • 存储的元素不超过128个;

    其他情况会采用跳表+Dict

zipList解释

是加强版的数组,和数组相比:支持多种数据格式,且每个元素的长度可以不一致。比数组更节省内存的空间。redis在数据量小的时候会采用这种方案取代其他的数据结构,相当于用时间换空间,毕竟redis是内存数据库,在内存的使用上是很敏感的:P

数据的持久化

redis在磁盘存储时候会去掉原有的数据结构,以便于节省磁盘空间,当需要将数据加载到内存中时候会还原原有的数据结构。(缺点是加载时间比较长,由于redis是内存级数据库所以这点损耗可接受)