31、跳表:Redis是如何存储有序集合的

你好,我是微扰君。 上一讲我们一起学习了布隆过滤器,它可以帮助我们用更低的存储成本、更高效地判断某个元素是否在一个集合中出现,当然代价是一定的误判率。总的来说,布隆过滤器特别适合用来解决Redis中缓存穿透的问题。 今天,我们同样来讨论一个在Redi...

30、布隆过滤器:如何解决Redis缓存穿透问题

你好,我是微扰君。 上一讲我们学习了如何基于bitmap,使用少量内存,对大量密集数据高效地去重和排序,本质就是通过一个长长的二进制01序列,来维护每个元素是否出现过这样的二值状态,这个数据结构非常重要,日常工作中有很多应用,比如我们今天要学习的布隆...

29、位图:如何用更少空间对大量数据进行去重和排序

你好,我是微扰君。 今天我们从一道非常经典的面试题开始说起,看看你能否用之前学过的知识回答出来,题目是这样的:QQ,相信你肯定用过,假设QQ号(也就是用户的ID)是一个10位以内的数字,用一个长整型是可以存储得下的。 现在,有一个文件里存储了很多个Q...

28、MVCC:如何突破数据库并发读写性能瓶颈

你好,我是微扰君。 过去两讲,我们学习了数据库中查询优化的一个重要手段——索引,通过空间换时间的思想,从数据结构查询本身的时间复杂度和IO开销两个角度,去提高查询的速度。除此之外,查询能做的优化其实还有很多,比如同样的语句在采用不同查询计划的情况下,...

27、LSM Tree:LevelDB的索引是如何建立的

你好,我是微扰君。 上一节我们学习了数据库中非常常用的索引数据结构——B+树,在过去很多年里它都是数据库索引的首选实现方式,但是这种数据结构也并不是很完美。 因为,每次修改数据都很有可能破坏B+树的约束,我们需要对整棵树进行递归的合并、分裂等调整操作...

13031323334243