问题:
1.rocksdb的lru cache和其他lru cache的实现有什么优劣?对标版本是什么?
可能的关注点: 并发程度/overhead/时间复杂度/
对标版本:
1:redis实现
2.java实现
3.
参考:
https://zhuanlan.zhihu.com/p/34133067
所有lru基本都有的公共feature:
1.double linked list + hash: O(1)查询, O(1)插入
2.如何淘汰:
3.shared:减少竞争
rocksdb的核心feature:
- 临界区最小化,new和free都在临界区外,对于rocksdb这种存大value(4k)的可能优势明显
- 高低优先级:高优先级存index和filter,低优先级存value
-
2.rocksdb是怎么做blockcache的
- 如何快速找到代码?
在block_based_table_reader.cc里搜block_cache->
关键流程从:
MaybeReadBlockAndLoadToCache开始看