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)) 文档 gkvdb的介绍及设计 gkvdb 的性能测试及与 leveldb、boltdb 性能对比 gkvdb v1.0 正式版发布,Go 语言开发的 KV 嵌入式数据库下载地址