面试宝典

redis为何单线程 效率还这么高 为何使用跳表不使用B+树做索引(阿里)

如果想了解redis与Memcache的区别参考:Redis和Memcache的区别总结阿里的面试官问问我为何redis使用跳表做索引,却不是用B+树做索引因为B+树的原理是叶子节点存储数据,非叶子节点存储索引,B+树的每个节点可以存储多个关键字,它将节点大小设置为磁盘页的大小,充分利用了磁盘预读的功能。每次读取磁盘页时就会读取一整个节点,每个叶子节点还有指向前后节点的指针,为的是最大限度的降低磁

如果想了解 redis 与Memcache的区别参考:Redis和Memcache的区别总结

阿里的面试官问问我为何redis 使用跳表做索引,却不是用B+树做索引

因为B+树的原理是 叶子节点存储数据,非叶子节点存储索引,B+树的每个节点可以存储多个关键字,它将节点大小设置为磁盘页的大小,充分利用了磁盘预读的功能。每次读取磁盘页时就会读取一整个节点,每个叶子节点还有指向前后节点的指针,为的是最大限度的降低磁盘的IO;因为数据在内存中读取耗费的时间是从磁盘的IO读取的百万分之一

而Redis是 内存中读取数据,不涉及IO,因此使用了跳表; 

至于redis的跳表原理 参考:聊聊Mysql索引和redis跳表 ---redis的有序集合zset数据结构底层采用了跳表原理 时间复杂度O(logn)(阿里)

mysql的B+索引原理 参考:一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试)

Kafka索引 参考:kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里)

接下来问题来了:为何 redis使用单线程 读取速度还这么块呢

今天下午,烟哥吃饱了撑着没事干,上班时间到处工(zhuang)作(bi)!只见同事小刘的桌上摆了一

原创不易,完成人机校验,阅读全文

相关推荐