可以看小林coding,我记得原因是这样的 1 为什么mysql用b+树?因为mysql基于磁盘,磁盘io很慢,b+树一个节点可以存100个数据,那么一次i9就可以比较100个数据,3次io就可以定位100w的区分度了,减少了磁盘io次数就提升了性能。 2 为什么redis用跳表,因为跳表比b+树维护索引要简单的多,每次插入节点只需要考虑需不需要向上层增加索引节点即可,不需要考率索引节点分裂的情况。 3为什么hashmap用红黑树?这个我自己想的,可能是因为红黑树不需要维护索引结点,所以没有额外的空间开销,因为不像mysql和redis都是数据库,数据量非常大,对读写性能要求都特别高。