聊聊 Mysql 索引和 redis 跳表

本文探讨了Redis中的跳表数据结构,它用于提高查询效率,支持快速插入、删除操作,时间复杂度为O(logn)。相较于数据库中的B树和B+树,跳表在内存数据库如Redis中更具优势,尤其在区间查找操作上更为高效。B+树适合IO密集型数据库,其非叶子节点仅含导航信息,所有数据存储在叶子节点,具有更好的磁盘读写代价和查询稳定性。Redis选择跳表而非B+树,原因之一是跳表的实现简单、灵活性高,能平衡执行效率和内存消耗。
摘要由CSDN通过智能技术生成

一、Redis中的跳表

跳表可以简单理解就是给链表加索引,当结点数量多的时候,这种添加索引的方式,会使查询效率提高的非常明显。

在这里插入图片描述

跳表这个动态数据结构,不仅支持查找操作,还支持动态的插入、删除操作,而且插入、删除操作的时间复杂度也是 ○(㏒n)。

对于单纯的单链表,需要遍历每个结点来找到插入的位置。但是对于跳表来说,因为其查找某个结点的时间复杂度是 ○(㏒n),所以这里查找某个数据应该插入的位置,时间复杂度也是 ○(㏒n)。


二、数据库中的 B 树和 B + 树

1.B 树,每个节点都存储 key 和 data,所有节点组成这棵树,并且叶子节点指针为 null,叶子结点不包含任何关键字信息。

2.B + 树,所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接,所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。(而 B 树的非终节点也包含需要查找的有效信息)

  • 非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。

  • 树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。

3.B 和 B + 树的区别在于,B + 树的非叶子结点只包含导航信息,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员世杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值