goleveldb

goleveldb 操作

不想你离开。 提交于 2020-02-26 13:54:17
package main import ( "fmt" "github.com/syndtr/goleveldb/leveldb/util" "github.com/syndtr/goleveldb/leveldb" ) func main(){ fmt.Println("hello") // 创建或打开一个数据库 db,err := leveldb.OpenFile("F:\\work\\testdb\\db", nil) if err != nil { panic(err) } defer db.Close() // 存入数据 db.Put([]byte("1"), []byte("6"), nil) db.Put([]byte("2"), []byte("7"), nil) db.Put([]byte("3"), []byte("8"), nil) db.Put([]byte("foo-4"), []byte("9"), nil) db.Put([]byte("5"), []byte("10"), nil) db.Put([]byte("6"), []byte("11"), nil) db.Put([]byte("moo-7"), []byte("12"), nil) db.Put([]byte("8"), []byte("13"), nil) // 遍历数据库内容 iter

TiDB Binlog 源码阅读系列文章(五)Pump Storage 介绍(上)

本小妞迷上赌 提交于 2019-11-27 04:54:08
作者:赵一霖 在 上篇文章 中,我们主要介绍了 Pump Server 的上线过程、gRPC API 实现、以及下线过程和相关辅助机制,其中反复提到了 Pump Storage 这个实体。本文就将介绍 Pump Storage 的实现,其主要代码在 pump/storage 文件夹中。 Pump Storage 由 Pump Server 调用,主要负责 binlog 的持久化存储,同时兼顾排序、配对等功能,下面我们由 Storage 接口开始了解 Pump Storage 的实现。 Storage interface Storage 接口 定义了 Pump Storage 对外暴露的操作,其中比较重要的是 WriteBinlog 、 GC 和 PullCommitBinlog 函数,我们将在下文具体介绍。Storage 的接口定义如下: type Storage interface { // WriteBinlog 写入 binlog 数据到 Storage WriteBinlog(binlog *pb.Binlog) error // GC 清理 tso 小于指定 ts 的 binlog GC(ts int64) // GetGCTS 返回最近一次触发 GC 指定的 ts GetGCTS() int64 // AllMatched 返回是否所有的 P-binlog 都和 C