![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 84
5ycode
这个作者很懒,什么都没留下…
展开
-
为什么redis的zset用跳跃表而不用b+ tree?
redis设计本身使用的是极简思想,跳跃表的操作,比二叉树简单,不需要考虑平衡,实现起来也简单,我觉的这个是重点redis是纯内存操作,不需要考虑磁盘IO的次数(一个*header可以理解为一个数据页,只不过是在内存里)MySQL为了持久化,需要考虑磁盘IO,利用数据页,系统缓存,减少磁盘的操作顺序如果这个问题反过来就好解释了,MySQL为什么用B+Tree 而不用跳表层低,磁盘IO少性能稳定平衡到达每一个叶子节点的路径都固定就上面的两个,实现复杂度高了也无所谓。原创 2023-02-21 09:58:39 · 1593 阅读 · 1 评论 -
一文读懂redis的zset
zset的数据结构在redis中有一个有序列表,它的底层是由压缩列表或跳表组成。我们看下对应的数据结构压缩链表:跳表:下载下来4.0的源码 https://download.redis.io/releases/redis-4.0.0.tar.gz对应的源码:src/server.h# 最大层级#define ZSKIPLIST_MAXLEVEL 32 /* Should be enough for 2^32 elements */# 表示上一层级是下一层级的1/4,相当于是一棵四叉树#d原创 2021-07-23 18:30:47 · 512 阅读 · 0 评论 -
一文读懂布隆过滤器
什么是布隆过滤器?布隆过滤器(Bloom Filter)是1970年由布隆提出的本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。特点:二进制数组+随机hash空间效率和查询效率都优于一般算法 O(1)有一定的误识别率(散列冲突)删除困难(重合)高并发场景下,防止缓存穿透;数据结构如何快速定位一个元素是否存在?我们通过redis的全局hash表或者hashMap就能解决这个问题; 看上面的数据结构,两个数据结构差不原创 2021-07-22 18:08:42 · 150 阅读 · 3 评论