仅通过导入即可使用的基于golang的键值存储系统goleveldb

简要概述

只需导入就可以使用的基于golang的boltdb键值存储,在受其启发下,我要介绍基于golang的goleveldb键值存储。

goleveldb 是什么?

goleveldb是leveldb的Golang版本。(完全相同与否尚未完全确认…)
与levigo等leveldb的包装器不同,goleveldb是用原生Golang编写的,所以不需要C的leveldb库,只需在Golang中导入即可轻松使用,非常便捷。
我个人认为,它适用于作为一个内嵌的持久化键值存储数据库,就像使用sqlite一样。

Leveldb本身就有一份詳盡的《Leveldb入門(基礎編)》資料,我將在此引述其特點。

key和value都可以是任意的字节序列。
数据会根据key进行排序并存储。
提供比较函数来改变排序顺序。
基本操作为Put(key, value)、Get(key)和Delete(key),非常简单。
可以将多个更改操作合并为原子操作。
可以创建临时快照以获取一致的数据视图(即使在写入时仍可以读取)。
使用Snappy压缩库自动压缩数据。
可以通过虚拟接口连接到外部活动(例如文件系统操作),因此可以抽象化和定制化操作系统的操作。

简单的使用方法 de

导入

import "github.com/syndtr/goleveldb/leveldb"

打开数据库

db, err := leveldb.OpenFile("path/to/db", nil)
defer db.Close()
...

Open函数的第一个参数是写入数据的目标文件。
第二个参数是可选的结构体,如果默认值可用,则传递nil。
如果文件不存在,则可以通过选项来指定是否创建。

阅读和写作 hé

// 読み込み
// 戻り値のスライスの内容は変更してはいけません。
data, err := db.Get([]byte("key"), nil)
...

// 書き込み
err = db.Put([]byte("key"), []byte("value"), nil)
...

// 削除
err = db.Delete([]byte("key"), nil)
...

请查看文档,还有其他选项,例如迭代(Iterate),批量写入(Batch write),和获取快照(Snapshot)等。

广告
将在 10 秒后关闭
bannerAds