【leveldb】Cache(十六):leveldb 内部整体Cache结构说明

本篇主要讲解下leveldb内部所使用的Cache整体结构及初始化好流程。Cache主要分TableCache和BlockCache。

Cache结构
1.TableCache

在这里插入图片描述

图1

TableCache:

  • Key: 落地存储文件名称,例如000021.ldb文件,file_number就是000021。
  • Value: 包括两部分,一是ldb文件句柄,二是ldb文件的table信息,详细的内容已在图1中介绍。

注:
当前版本是1.22版本,落地的文件好像不是sst格式,而是ldb格式。

2.BlockCache

在这里插入图片描述

图2

BlockCache:

  • key: 当前table对应的缓存id + BlockData在ldb文件中的偏移位。
  • Value: 就是真实的BlockData数据。

注:
因为打开的ldb(就是sst)文件中的BlockData都是存放于全局一份的BlockCache中的,
而不同的ldb文件其BlockData的offset可能相同,为了区分不同ldb文件中的BlockData的
offset,所以要给每个ldb文件分配一个唯一的 cache_id,这样key = cache_id + block_offset的组合就是唯一的了。


Cache创建流程

在这里插入图片描述

图3

Cache中Key查询流程

在这里插入图片描述

图4

Cache类关系图

在这里插入图片描述

图5
总结:

本篇主要是对leveldb中的Cache结构、流程、类关系图进行的整体的说明,接下来的文章会进行源码的走读注解。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值