mysql redis 存储

树类型实现
Self-balance binary search tree 平衡二叉查找树AVL树、红黑树、节点大小平衡树
节点的儿子个数是否平衡备注时间复杂度
BST 二叉查找树 binary search tree只有二叉不平衡并不是B树O(logN) 计算机中lg以2为底 数学里logN又记作lgN 以十为底ln e以e为底
B树(B-Tree、B-树,中间是杠不读减号) Balance treen阶(最简单是 2-3树)平衡节点全部存数据,是没有索引的。
B*树多路搜索树平衡在B+树的基础上对非根和非叶子节点增加指向兄弟的节点
B+树多路搜索树、mysql里1280阶平衡(层数最深与最浅小于等于1 )是节点故意成的不同的形状,最后一层存数据,前面几层存索引插入数据时候扩展页节点比跳表方便,且层数少,插入修改索引页
跳表redis 当需要查找内存中很长的链表中的数据时候,跳表可以加速,层数多需要保证顶层链表长度只有2,空间换时间插入无需树的旋转开销
红黑树(由234树发展而来)
MySql最大数据量计算方式

页面节点索引量x^(层数n-1) · 数据节点行y
一般x = 15kB除以(12B/个) = 1280个 索引页

(1280页) ^ (3-1层) · (15行/页)  = 2.5千万(行)
B+树和红黑树差异

一般的跳表是带有二阶树索引的链表(如果存千万条数据,很深起码得24层),如果底层存储数据的地方是链表查找的话肯定没有队列下标索引快。完全可以改成1280多阶数组队列(不可以,你上面还是得加,不然链表查询还是很慢),但是,需要初始就给划定所有的空间(redisList里是先头插或尾插后再维护索引),没有B+树灵活。
顺带一提redis是跳表,纯内存IO不再是瓶颈,层高就不再是瓶颈(链表会不会还是瓶颈?)
n阶层B树(n>=3) 是 多路搜索树
二叉树 才是BST
B+tree 也是 多路搜索树 ,但是节点故意成的不同的形状

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值