内容简介:gkvdb v1.0正式版发布,本次更新内容如下: 由于针对的是KV键值对存储,底层数据结构从B+树调整为哈希表,并按照DRH(Deep-Re-Hash)深度哈希分区算法进行改进,性能得到极大提升; 不再支持数据范围遍历,取而代之...
gkvdb v1.0正式版发布,本次更新内容如下:
由于针对的是KV键值对存储,底层数据结构从B+树调整为哈希表,并按照DRH(Deep-Re-Hash)深度哈希分区算法进行改进,性能得到极大提升;
不再支持数据范围遍历,取而代之的是随机遍历;
去掉碎片文件,数据库启动时新增碎片检测功能,保证了数据文件空间的充分利用,并提高了数据写入和删除效率,但提高了启动时的时间开销;
新增文件空间整理器,支持对大型碎片进行自动迁移,并自动矫正数据文件大小;
新增缓存支持,提升整体数据库操作效率;
完成性能测试,并发布性能测试报告;
gkvdb 是 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("john") fmt.Println(db.Get(key)) // 删除数据 key := []byte("john") 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))
文档
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- FlashDB V1.0.0 正式版发布,轻量级嵌入式数据库
- 嵌入式Python环境
- 嵌入式系统(Linux)优化
- 用go来做嵌入式开发-嵌入资源简化程序部署
- Simulink模型的嵌入式代码
- 嵌入式C语言修炼之道
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cyberwar
Kathleen Hall Jamieson / Oxford University Press / 2018-10-3 / USD 16.96
The question of how Donald Trump won the 2016 election looms over his presidency. In particular, were the 78,000 voters who gave him an Electoral College victory affected by the Russian trolls and hac......一起来看看 《Cyberwar》 这本书的介绍吧!
XML 在线格式化
在线 XML 格式化压缩工具
Markdown 在线编辑器
Markdown 在线编辑器