redis 有序集合、跳表、面试、源码学习

1、有序集合(ordereset)用在哪里?

  排行榜、成绩排名

2、跳表 数据结构?

a、有序的数据结构,增删改查,数组,增删时存在大量数据移动

b、有序的链表,增删改查:O(n)。如何增加查找的效率?增加一层有序链表可以增加查找效率。如果数据量大,可以继续增加有序链表。

(1)如何增加有序链表?

  二分方法,依次增加链表。例如共有七个数,第一层1、2、3、4、5、6、7. 第二层1、3、5、7. 第三层1、5.

  但是这种方法存在问题:对于增、删情况,可能会导致所有层都会改变。这样代价较高。

3、redis跳表的实现原理:

源码分析?redis nginx skynet memcache等

a、明确目标,主题,redis跳表实现

b、构造环境数据测试,调试

c、验证我们的目标

 

有序集合是如何存储的。

1、当有序集合的节点的个数 大于 128 的时候,或者 任意节点 的member长度大于64的时候,采用跳表

2、否则使用 ziplist

数据量少的时候,使用跳表(skiplist)并不合适,所以要满足上面的条件。

 

红黑树:增删改查的时间复杂度 O(log n),

跳表:增删改查的时间复杂度O(log n)大概率

 

技术成长线路:5年以上 需要提升自己的 后台开发 应该是后台主管 

1、从源码中学习, 1)nginx:数据结构、slab、upstream、机制的设计  2)redis:建立连接到数据处理、数据的存储原理、数据键值、磁盘同步、rdb 、aof  网络io 3)zerom:服务与服务、推拉模型、监听发布模型、请求回应、底层网络通信机制、架构实现

2、 提高造轮子能力,线程池、消息队列、内存池、请求池、高性能高并发io,自己实现epoll reactor proactor 网络协议栈 nginx模块开发, 锁,cas,公平锁,数据的乐观锁和悲观锁

3、集群的能力。redis哨兵模式 一致性hash mysql的集群

4、linux内核,内核编译,内核更换,网卡子系统,内存管理,

5、mysql linux调优

6、docker 运维部署的能力

7、学习一线大厂的架构

 

 

面试:

滴滴 2020年面试真题:

redis的对象类型有哪些?以及底层的数据结构(有序集合 hash)?

头条 2020年面试真题:

zset的底层是用什么数据结构实现的。

 

posted @   小海哥哥de  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示