reids之底层数据结构

底层数据结构

redis常用的数据结构:String、hash、list、set、zet,每个数据结构底层见下图:
在这里插入图片描述

哈希表

Redis的Hash,就是在数组+链表的基础上,进行了一些rehash优化等。
在这里插入图片描述

双向列表

Redis的链表在双向链表上扩展了头、尾节点、元素数等属性

在这里插入图片描述
特点:
可以直接获得头、尾节点。
常数时间复杂度得到链表长度。
是双向链表。

压缩列表ziplist

压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry),每个节点可以保存一个字节数组或者一个整数值。
压缩列表的原理:压缩列表并不是对数据利用某种算法进行压缩,而是将数据按照一定规则编码在一块连续的内存区域,目的是节省内存。
在这里插入图片描述

整数数组intset

Reids对整数存储专门作了优化,intset就是redis用于保存整数值的集合数据结构。当使用set数据结构时,只包含整数元素,redis就会用intset来存储,否则会用hash的key存储。

在这里插入图片描述

跳表

skipList中的元素是有序的,所以跳跃表在redis中用在有序集合键、集群节点内部数据结构。它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的。具有如下性质:
  1、由很多层结构组成;
  2、每一层都是一个有序的链表,排列顺序为由高层到底层,都至少包含两个链表节点,分别是前面的head节点和后面的nil节点;
  3、最底层的链表包含了所有的元素;
  4、如果一个元素出现在某一层的链表中,那么在该层之下的链表也全都会出现(上一层的元素是当前层的元素的子集);
  5、链表中的每个节点都包含两个指针,一个指向同一层的下一个链表节点,另一个指向下一层的同一个链表节点;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值