1 Star 1 Fork 32

fnet / gkvdb

forked from John / gkvdb
暂停
 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 1.59 KB
一键复制 编辑 原始数据 按行查看 历史
John 提交于 2017-11-24 08:59 . README更新

Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能Key-Value嵌入式数据库。

安装

go get -u gitee.com/johng/gf
go get -u gitee.com/johng/gkvdb

使用

基本用法

import "gitee.com/johng/gkvdb/gkvdb"

// 创建数据库,指定数据库存放目录,数据库名称
db, err := gkvdb.New("/tmp/gkvdb", "test")
if err != nil {
    fmt.Println(err)
}

// 插入数据
key   := []byte("name")
value := []byte("john")
if err := db.Set(key, value); err != nil {
    fmt.Println(err)
}

// 查询数据
key   := []byte("name")
fmt.Println(db.Get(key))

// 删除数据
key   := []byte("name")
if err := db.Remove(key); err != nil {
    fmt.Println(err)
}

// 关闭数据库链接,让GC自动回收数据库相关资源
db.Close()

开启/关闭缓存

// 启用缓存
db.SetCache(true)

// 关闭缓存
db.SetCache(false)

特殊写入操作

// 无论缓存是否开启,直接写入数据到磁盘
key   := []byte("name")
value := []byte("john")
if err := db.SetWithoutCache(key, value); err != nil {
    fmt.Println(err)
}

键值对随机遍历

// 随机获取10条数据
fmt.Println(db.Items(10))

// 获取所有的键值对数据
fmt.Println(db.Items(-1))

// 获取所有的键键名
fmt.Println(db.Keys(-1))

// 获取所有的键键值
fmt.Println(db.Values(-1))

文档

  1. gkvdb的介绍及设计
  2. gkvdb的性能测试及与leveldb、boltdb性能对比
Go
1
https://gitee.com/fnet/gkvdb.git
git@gitee.com:fnet/gkvdb.git
fnet
gkvdb
gkvdb
master

搜索帮助