WriteBatch-levelDB源码解析

将key  value数据按照一定格式,批量组装起来,并提供处理的接口。

【数据成员介绍】

rep_:格式如下图所示,


sequence number:此次批量写入的开始序列号;

count:代表这一批中有多少条记录,

record:代表一条记录,第一个字节代表类型,是增加或修改一条记录,还是删除一条记录,紧接着就是key(用key的长度和key的内容分开表示),value(用value的长度和value的内容分开表示)


【方法成员介绍】

void WriteBatch::Put(const Slice& key, const Slice& value)
作用:将一条key  value按照record的格式,追加到rep_;


void WriteBatch::Delete(const Slice& key)

作用:将一条删除的记录按照record的格式,追加到rep;


Status WriteBatch::Iterate(Handler* handler) const

作用:迭代操作器,通过传入handler,来将rep_里面搜集的记录,进行处理,具体怎么处理由handler决定,但这个handler一定是实现了下面的接口

      class Handler {
       public:               
        virtual ~Handler();  
        virtual void Put(const Slice& key, const Slice& value) = 0;
        virtual void Delete(const Slice& key) = 0;
      };                     
      Status Iterate(Handler* handler) const;


比如,handler有可能是MemTableInserter,那么就将这些record写入内存。这种将数据与处理分开的设计,使扩展性很强。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值