redis-list实现
2024-09-03 10:25:36
Redis 数据结构---链表
Redis的list底层实现使用的不是数组而是链表的数据结构 叫listnode 是一个双向链表
ListNode{
Struct listNode *prev //前置节点
Struct listNode *next //后置节点
Void *value
}
而redis的list正是使用listNode实现
Typedef struct list{
listNode *head // 头结点
listNode *tail // 尾节点
unsigned long len //list长度
void *(*dup) (void *ptr) //指针 指向 节点复制函数
void *(*free) (void *ptr) //指针,指向节点释放函数
void *(*match) (void *ptr,void *key) // 指针,指向节点值比对函数
}
如果确定了list中的某一节点,查询其前后置节点可以直接查询pre next,时间复杂度仅为O(1)
List中head.prev=null, tail.next=null 前后为空,简称无环结构
List有api可直接获取head tail listFist和 listLast
List长度函数时间复杂度为O(1),因为有len属性
因为dup free match三个属性可为list设置不同类型的特定函数,所以链表可以用以存储不同的数据接口,只要三属性对应的函数指针正确
最新文章
- 详解Java 8中Stream类型的“懒”加载
- java web filter 学习(2)
- Hong Kong Regional Online Preliminary 2016 C. Classrooms
- UVALive 6264 Conservation --拓扑排序
- Oracle----dual
- 关于jdbc注冊驱动的那点事
- 证明 poj 1014 模优化修剪,部分递归 有错误
- JSP include HTML出现乱码 问题解决
- HttpClient读取数据乱码的解决方案
- apollo1.7.1初探(二)使用apollo订阅主题,发布主题消息
- Go 初体验 - 闭包,数组,切片,锁
- nginx配置反向代理和负载均衡
- java求解第N个素数(质数)
- 网络编程基础【day10】:操作系统介绍
- 安装httpd服务
- Android平台MediaCodec避坑指北
- bzoj 1095 Hide 捉迷藏 - 动态点分治 -堆
- HTML/HTML5
- Kylin性能调优记——业务技术两手抓
- 转发---[沧海拾遗]java并发之CountDownLatch、Semaphore和CyclicBarrier
热门文章
- ar是System Activity Reporter(系统活动情况报告)的缩写。这
- # useradd -u 700 -g users vbird2
- shell应用之cobbler批量部署
- JDK、JRE 和 JVM 的区别
- LTC4020
- 8.4 parted:磁盘分区工具
- Jmeter+Ant+Jenkins接口自动化框架
- Python发送SMTP邮件指南
- SQL SERVER常用语法记录
- @RequestParam(required = true),@RequestParam(required = true)