当前位置: 首页 > news >正文

Redis数据结构——链表list

链表是一种常用的数据结构,提供了顺序访问的方式,而且高效地增删操作。
Redis中广泛使用了链表,例如:列表的底层实现之一就是链表。

在Redis中,链表分为两部分:链表信息 + 链表节点。

  • 链表节点用来表示链表中的一个节点,基础的值和指向前和后的指针
  • 链表信息,用来保存整个链表的信息,例如首尾节点、节点数量

先来说链表节点,就是我们最常见的链表节点的结构:

typeof struct listNode{// 前驱节点struct listNode *prev;// 后继节点struct listNode *next;// 节点的值void *value; 
}listNode; 

通过链表节点中的prev和next组成双向链表。

而链表这个结构体中保存了整个链表的信息

typeof struct list{listNode *head; // 表头节点listNode *tail; // 表尾节点unsigned long len; // 链表节点数量// 接下来就是一些链表操作的API // 节点复制 ...// 节点释放 ...// 节点比较 ... 
}list; 

Redis中的链表并没有什么特殊之处,总结一下特点:

  • 双端操作,链表信息list中保存了首尾节点
  • 无环,head的prev始终为null,tail的next始终为null
  • O(1)获取链表节点数量
  • 多态:链表节点中通过void*来保存节点值,节点值可以是任意类型。

参考文章

  • Redis数据结构——链表 - 随心所于 - 博客园
  • 《Redis设计与实现》
http://www.lryc.cn/news/126916.html

相关文章:

  • [自学记录06|*百人计划]Gamma矫正与线性工作流
  • 【数据结构】二叉树链式结构的实现及其常见操作
  • 从零实战SLAM-第九课(后端优化)
  • Python Opencv实践 - 图像金字塔
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的固定帧率(C++)
  • 计算机竞赛 python+大数据校园卡数据分析
  • DNNGP模型解读-early stopping 和 batch normalization的使用
  • 【目标检测】目标检测 相关学习笔记
  • 面试攻略,Java 基础面试 100 问(十六)
  • 章节5:脚本注入网页-XSS
  • ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)
  • 迅捷视频工具箱:多功能音视频处理软件
  • linux--fork()详解
  • go_并发编程(1)
  • 第一百一十五回 权限管理包permission_handler
  • 【机器学习】sklearn数据集的使用,数据集的获取和划分
  • Mysql之 optimizer_trace 相关总结
  • 【Linux命令详解 | wget命令】 wget命令用于从网络下载文件,支持HTTP、HTTPS和FTP协议
  • DockePod信号处理机制与僵尸进程优化
  • NetApp StorageGRID 对象存储,使您能够跨公有、私有云和混合多云环境管理非结构化数据
  • 使用Java服务器实现UDP消息的发送和接收(多线程)
  • Linux--查看端口占用情况
  • 微信小程序|自定义弹窗组件
  • 【数据结构】实现顺序表
  • 【嵌入式环境下linux内核及驱动学习笔记-(19)LCD驱动框架2-FrameBuffer】
  • 自己动手写数据库系统:实现一个小型SQL解释器(中)
  • HTML 与 XHTML 二者有什么区别
  • fiddler抓包问题记录,支持https、解决 tunnel to 443
  • Kubesphere中DevOps流水线无法部署/部署失败
  • 使用Nginx解决跨域问题