TableCache 是Level DB 中重要的类,Level DB 中多层(multi level),且每一层(level)有多个 key-value file,TableCache正是用来缓存多层以及多层中的file数据,更快速地检索。
table cache
这里面的table是Level DB --- Table-CSDN博客所介绍的,cache是Level DB --- Cache_leveldb cache-CSDN博客所介绍的,table cache里面的key是Level DB --- WriteLevel0Table-CSDN博客 中所介绍的创建文件的文件名,value就是一个table实例。
核心函数
//在cache里面搜索file_number名字的table,如果cache中没有则创建以file_number
//名字的table
Status FindTable(uint64_t file_number, uint64_t file_size, Cache::Handle**);//在cache里面搜索file_number名字的table,返回该table的Iterator
Iterator* NewIterator(const ReadOptions& options, uint64_t file_number,uint64_t file_size, Table** tableptr = nullptr);//在cache里面搜索file_number名字的table,在该table中调用InternalGet查找key-value
Status Get(const ReadOptions& options, uint64_t file_number,uint64_t file_size, const Slice& k, void* arg,void (*handle_result)(void*, const Slice&, const Slice&));