golang rocksdb

更多精彩内容星云链开始nit小星星MySQL 5.6 Database Administrator 1Z0-883Kevin关大大Go语言蓓蓓的万能男友golang redis数据库基本操作笔记不屈真实在网页上让代码高亮的css及js(偷来的)全栈在路上 · · 2442 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

接上

进入setup()

n.storage, err = storage.NewRocksStorage(n.config.Chain.Datadir)

if err != nil {

logging.CLog().WithFields(logrus.Fields{

"dir": n.config.Chain.Datadir,

"err": err,

}).Fatal("Failed to open disk storage.")

}

初始化一个rocksdb

进入newrocksstorage

filter := gorocksdb.NewBloomFilter(10)

bbto := gorocksdb.NewDefaultBlockBasedTableOptions()

bbto.SetFilterPolicy(filter)

cache := gorocksdb.NewLRUCache(512 <<20)

bbto.SetBlockCache(cache)

opts := gorocksdb.NewDefaultOptions()

opts.SetBlockBasedTableFactory(bbto)

opts.SetCreateIfMissing(true)

opts.SetMaxOpenFiles(500)

opts.SetWriteBufferSize(64 * opt.MiB)//Default: 4MB

opts.IncreaseParallelism(4)//flush and compaction thread

db, err := gorocksdb.OpenDb(opts, path)

if err != nil {

return nil, err

}

storage := &RocksStorage{

db:          db,

cache:      cache,

enableBatch:false,

batchOpts:  make(map[string]*batchOpt),

ro:          gorocksdb.NewDefaultReadOptions(),

wo:          gorocksdb.NewDefaultWriteOptions(),

}

从以上代码看roclsdb对象存在storage.db中

以后每次操作rocksdb就使用n.storage.db.(put,del.get,add)等函数

前面几句是调用gorockdb接口初始化一个rocksdb 将一些参数存在storage中

比如说cache

batchopts顾名思义就是批量操作。string->batchopt 其中string 类型是put get del batchopt是key->value

根据string类型判断是什么操作,然后将batchopt里面的key->value插入或删除或取出


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:更多精彩内容星云链开始nit小星星MySQL 5.6 Database Administrator 1Z0-883Kevin关大大Go语言蓓蓓的万能男友golang redis数据库基本操作笔记不屈真实在网页上让代码高亮的css及js(偷来的)全栈在路上

查看原文:golang rocksdb

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2442 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传