千家信息网

Redis和Kafka都用到的SkipList是怎样的

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这期内容当中小编将会给大家带来有关Redis和Kafka都用到的SkipList是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。跳表被广泛地运用到了各种缓存地
千家信息网最后更新 2025年01月31日Redis和Kafka都用到的SkipList是怎样的

这期内容当中小编将会给大家带来有关Redis和Kafka都用到的SkipList是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

跳表被广泛地运用到了各种缓存地实现当中,它的主要优点,就是可以跟红黑树、AVL等平衡树一样,做到比较稳定地插入、查询与删除。理论插入查询删除的算法时间复杂度为O(logN)。

什么是跳表

链表,相信大家都不陌生,维护一个有序的链表是一件非常简单的事情,我们都知道,在一个有序的链表里面,查询跟插入的算法复杂度都是O(n)。

我们能不能进行优化呢,比如我们一次比较两个呢?那样不就可以把时间缩小一半?

同理,如果我们4个4个比,那不就更快了?

跳表就是这样的一种数据结构,结点是跳过一部分的,从而加快了查询的速度。跳表跟红黑树又有什么差别呢?既然两者的算法复杂度差不多,为什么Redis要使用跳表而不使用红黑树呢?跳表相对于红黑树,主要有这几个优点: 1.代码相对简单,手写个跳表还有可能,手写个红黑树试试? 2.如果我们要查询一个区间里面的值,用平衡树可能会麻烦。这里的麻烦指的是实现和理解上,平衡二叉树查询一段区间也是可以做到的。 3.删除一段区间,这个如果是平衡二叉树,就会相当困难,毕竟设计到树的平衡问题,而跳表则没有这种烦恼。好了,相信你对跳表已经有一些认识了,我们来简单介绍平衡二叉树的几个基本操作。

查询

假如我们要查询11,那么我们从最上层出发,发现下一个是5,再下一个是13,已经大于11,所以进入下一层,下一层的一个是9,查找下一个,下一个又是13,再次进入下一层。最终找到11。

是不是非常的简单?我们可以把查找的过程总结为一条二元表达式(下一个是否大于结果?下一个:下一层)。理解跳表的查询过程非常重要,试试看查询其他数字,只要你理解了查询,后面两种都非常简单。

插入

插入的时候,首先要进行查询,然后从最底层开始,插入被插入的元素。然后看看从下而上,是否需要逐层插入。可是到底要不要插入上一层呢?我们都知道,我们想每层的跳跃都非常高效,越是平衡就越好(第一层1级跳,第二层2级跳,第3层4级跳,第4层8级跳)。但是用算法实现起来,确实非常地复杂的,并且要严格地按照2地指数次幂,我们还要对原有地结构进行调整。所以跳表的思路是抛硬币,听天由命,产生一个随机数,50%概率再向上扩展,否则就结束。这样子,每一个元素能够有X层的概率为0.5^(X-1)次方。反过来,第X层有多少个元素的数学期望大家也可以算一下。

删除

同插入一样,删除也是先查找,查找到了之后,再从下往上逐个删除。比较简单,就不再赘叙。
Kafka的运用Kafka 的每个日志对象中使用了 ConcurrentSkipListMap 来保存各个日志分段,每个日志分段的 baseOffset 作为 key,这样可以根据指定偏移量来快速定位到消息所在的日志分段。

总结

跳表,用了计算机中一场非常用的解决问题的思路,随机。随机在深度学习与人工智能领域运用得非常的广泛。

上述就是小编为大家分享的Redis和Kafka都用到的SkipList是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

查询 复杂 日志 算法 元素 区间 复杂度 就是 有序 优点 内容 思路 时间 概率 结构 过程 问题 麻烦 分析 陌生 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机网络技术专接本什么专业 万德数据库能免费使用吗 软件开发现在工资多少 数据库设计是哪个软件 计算机网络技术网信安全方向 数据库范式的判别 南京的软件开发行业的分析 我的世界服务器指令讲解 内蒙古网通dns服务器 大学生网络安全尖锋训练营 北京综合软件开发大概费用 江门数据链软件开发费用 宝塔面板数据库默认访问权限 美术宝软件开发者 网络安全两法两条例是指什么 网络安全宣周宣传册 服务器是否可以更换 虹口区网络技术服务要多少钱 数据库模糊匹配优化 非关系型数据库的种类是 胸牌设计软件开发 服务器系统重做 无锡通用软件开发代理价钱 服务器自动获取的ip地址不对 厦门企业管理财务软件开发 如何远程链接数据库 江苏工控软件开发收费报价表 软件开发立项申请书模板 数据库怎么注入攻击 库尔勒网络安全工程师
0