redis数据结构之一:链表
2019独角兽企业重金招聘Python工程师标准>>>
链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。redis提供五种数据结构:String、hash、list、set、sorted set。这五大数据类型底层有不同的实现方式,给我们在数据结构类型的选择上更方便。底层数据结构的实现主要分为以下几块:链表、字典、跳跃表、整数集合、压缩列表、对象。首先来分析一下链表。
(1)listNode节点
在adlist.h结构来表示链表节点,如下图所示,
listNode通过prev和next指针组成双端链表:,如下图所示:
(2)list节点
虽然仅仅使用多个listNode结构就可以组成链表,但使用adlist.h/list来持有链表的话,操作起来更方便,如下图所示:
list结构为链表提供了表头指针、表尾指针、链表长度计数器、而dup用于复制链表节点所保存的数、 free用于释放链表节点所保存的值、match用于比较链表节点所保存的值和另一个输入值是否相等。
list节点和listNode节点的关系可以用下图来表示;
(3)总结
redis链表实现的特性总结如下:
(i)双端:获取某个节点的前置节点和后置节点的复杂度都是O(1)。
(ii)无环。
(iii)带表头指针和表尾指针
(iv)带链表长度计数器
(v)多态。
(4)用途
链表广泛应用于实现redis的各种功能,比如列表键、发布和订阅、慢查询、监视器等。
转载于:https://my.oschina.net/oneFaith/blog/774835
redis数据结构之一:链表相关推荐
- redis——数据结构(字典、链表、字符串)
1 字符串 redis并未使用传统的c语言字符串表示,它自己构建了一种简单的动态字符串抽象类型. 在redis里,c语言字符串只会作为字符串字面量出现,用在无需修改的地方. 当需要一个可以被修改的字符 ...
- Redis 数据结构-字典源码分析
2019独角兽企业重金招聘Python工程师标准>>> 相关文章 Redis 初探-安装与使用 Redis 数据结构-字符串源码分析 本文将从以下几个方面介绍 前言 字典结构图 字典 ...
- 为了拿捏 Redis 数据结构,我画了 40 张图
Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. 因此,这次我们就来好 ...
- 【带你重拾Redis】Redis数据结构及使用场景
Redis数据结构 Redis有着非常丰富的数据结构,这些数据结构可以满足非常多的应用场景, 如果对这些数据结构有一个比较清晰的认知,使用Redis也会更加得心应手. Redis主要支持以下数据结构: ...
- 深入剖析Redis系列(七) - Redis数据结构之列表
前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...
- redis 数据结构
2019独角兽企业重金招聘Python工程师标准>>> redis对象 redis 数据结构 字符串对象 SDS(简单动态字符串) 列表对象 压缩列表(ziplist) 或 链表 ...
- Redis 数据结构与内存管理策略(上)
Redis 数据结构与内存管理策略(上) 标签: Redis Redis数据结构 Redis内存管理策略 Redis数据类型 Redis类型映射 Redis 数据类型特点与使用场景 String.Li ...
- redis value多大会影响性能_选择合适Redis数据结构,减少80%的内存占用
前言 redis作为目前最流行的nosql缓存数据库,凭借其优异的性能.丰富的数据结构已成为大部分场景下首选的缓存工具. 由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观. ...
- Redis数据结构以及对应存储策略
redis数据结构: String 可以是字符串也可以是数字,以及浮点数 List,一个链表,链表上每一个节点都包含一个字符串 set 包含字符串的无序手机其,特点是每一个字符都是唯一的 hash,包 ...
- 你需要知道的那些 redis 数据结构(前篇)
戳蓝字"CSDN云计算"关注我们哦! 作者 | 饿了么物流技术团队 来源 | CSDN 企业博客 redis 对于团队中的同学们来说是非常熟悉的存在了,我们常用它来做缓存.或是实现 ...
最新文章
- linux Mysql 安装
- 记录在Spring-Boot中使用Fegin调用RESTfull的PATCH方法设置
- Android -- TextView与EditText 同步显示
- unity值得推荐的网址
- UA MATH571B 试验设计V 析因设计简介
- 信息系统项目管理师:第8章:项目质量管理(2)-章节重点
- NOCOUNT如何影响ADO.NET(SET NOCOUNT ON的性能问题)
- 解决链接模型的可见性问题
- html背景图片横屏,CSS背景颜色 背景图片 居中 重复 固定样式background经验篇
- Oracle常用的日期函数
- 安卓学习笔记23:常用控件 - 网格视图与图像切换器
- MATLAB生成正弦波
- java volatile详解,互联网 面试官 如何面试
- 下三角矩阵的逆矩阵_上三角或下三角矩阵的逆矩阵能否简便方法求出??只有主副对角线不为0的矩阵能否直接写出逆矩阵。...
- 微软 Exchange Autodiscover 协议存bug,数十万域凭据可遭泄露
- Python对图像进行二维Gabor滤波加速
- JAVA基础(3/17)-基本语法_运算符
- java如何将字符串转化为日期_java如何将字符串转为日期
- SE96X、CM500-I27条码扫描引擎使用经验
- lisp 圆柱螺旋线_AutoCAD.Lisp等距3D螺旋线