Golang Go语言开源kv引擎nutsdb v0.10.0发布
大家好,这篇文章主要是来说明下 NutsDB v0.10.0 发布的情况。Nutsdb 是一个纯 Go 语言开发 KV 引擎,支持类似 redis 的数据结构如 list 、set 、zset 。
原文地址
https://mp.weixin.qq.com/s/REle4BrBr962c376BIwxFA
项目地址
https://github.com/nutsdb/nutsdb 欢迎 star 关注我们。目前项目已经累计了 2300+star 。
目前主要使用场景:
- 嵌入式应用,用于存储定时间段的数据(已有人用在生产)
- 存储 Meta 信息(例子: https://github.com/cloud-barista/cb-store )
- 加密存储(例子: https://github.com/jrapoport/chestnut )
- 本地队列(已有人用在生产)
- 本地缓存
github 上统计的依赖 nutsdb 的开源项目:
https://github.com/nutsdb/nutsdb/network/dependents?package_id=UGFja2FnZS0yMjY0ODU0MDM5
本次 v0.10.0 发布的主要改动
非常感谢参与贡献的小伙伴,我把相关 PR (#PR 编号)贡献的小伙伴的 github 名放在后面了(类似 @xxx )。
本次改动主要分以下几类(详见: https://github.com/nutsdb/nutsdb/issues/193 ):
1 、bug 的修复
list 数据结构 count 为负号的边界处理(#183 )[@andrewhzy](/user/andrewhzy)
2 、新功能
- 支持 LRemByIndex API (#174) [@NailCui](/user/NailCui)
- 增加 LKeys SKeys ZKeys API 。这个特性支持对 key 做正则匹配,可以非常方便的扫描出你需要的 key ,*支持全量的扫描,非常实用。(#175 ) [@NailCui](/user/NailCui)
- 增加 Iterator API (HintKeyAndRAMIdxMode 和 HintKeyValAndRAMIdxMode 这两个模式下支持),之前的 range 支持是对扫描结果返回,这次外国小哥带来了迭代器的方式。(#191 )[@zeina1i](/user/zeina1i)
3 、重构
- graceful options parameters 。使用选项模式(#185 )[@Nailcui](/user/Nailcui)
4 、单测
- Add rwmanager fileio test (#170 ) [@zeina1i](/user/zeina1i)
- Improve code coverage about list (#183) [@andrewhzy](/user/andrewhzy)
- Test coverage improvement for inmemory (#187) [@andrewhzy](/user/andrewhzy)
5 、文档
- A few corrections in ReadME file (#171) [@kwakubiney](/user/kwakubiney)
整个 v0.10.0 的迭代的始末
-
1 、首先会发起一个 proposal ,即一些提议
-
2 、然后发起报名
-
3 、报名之后领取相应的任务来做
报名的人员,我们会在每周发起一次讨论,主要是同步下进度和遇到的问题等。
整个过程是透明和可追溯的,所以自己的贡献,别人都看得到的,不要吝啬你的贡献哈。
新的 proposal 提议来了
这次提议 2 个部分:
proposal 的 issue 已经建立: https://github.com/nutsdb/proposal/issues/4
快来报名吧!!!
nutsdb v0.11.0 提议
v0.11.0 马上也要开始了,有兴趣的可以直接在 issue 中回复报名,或者加群联系我报名参与。后面会根据实际情况做调整。
难度:单测类 < 功能类 < 性能类(可以按照自己的情况来选择)
1 、单测类
提高单测覆盖率,接着 v0.10.0 版本的
说明下关于第一点的覆盖率,可以多人同时报名参与,因为需要拆分下。
2 、功能类
目前 open 的 issue 挑选一些,方便落地的&也准备了一些有难度的可选,https://github.com/nutsdb/nutsdb/issues
内存模式相比非内存模式,有一些功能缺失比如:内存模式下没有 PrefixScan nutsdb#188 增加支持 IterateBuckets 正则匹配(可视化项目需要) Add support for IterateBuckets regularized matching nutsdb#194 HintBPTSparseIdxMode 支持正向迭代(较难,可选) HintKeyValAndRAMIdxMode 、HintKeyAndRAMIdxMode 支持反向迭代(较难,可选)
3 、性能类
关于有人提出提高 db 的启动时间(可选)
nutsweb v0.1.0 提议
nutsweb 项目争取 0.1.0 版本能实现基础的查询功能。
nutsweb这个项目主要是对 nutsdb 提供可视化的能力和nutshttp(提供 nutsdb http 访问的能力)配合使用。
目前有一个 PR (#1 )初始化项目( init project with Vite + React + TypeScript )) @jukanntenn 贡献的。希望能招募到人,开发 v0.1.0 。
招募开发者
目前 NutsDB 开发者群有 30 人了(这里面都是意向开发者或者能提供宝贵意见的人)。
贡献方向:
- 1 、数据库引擎方向
- 2 、工具生态如 cli 、可视化工具等
- 3 、单测覆盖率、文档建设等 NutsDB 发展还很早期,等你的加入,希望你有热情,有意愿,有学习力,有开源精神,愿意贡献项目。
加群
这个群主要交流 Go 语言&nutsdb&其他技术相关的。如果二维码过期,请访问这个链接

Golang Go语言开源kv引擎nutsdb v0.10.0发布
更多关于Golang Go语言开源kv引擎nutsdb v0.10.0发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html
已 star ,有没 pub/sub 的计划
更多关于Golang Go语言开源kv引擎nutsdb v0.10.0发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
后面在项目用一下
后面在项目用一下看看
老问题:和其他的区别?感觉现在 KV 数据库也卷起来了,一大堆
NutsDB v0.10.0版本的发布是Go语言社区中的一件值得庆祝的盛事。作为IT营中专注于Go语言的专家,我对这一消息感到非常高兴,并愿意分享一些关于NutsDB的看法。
NutsDB是一个纯Go编写的开源键值存储引擎,以其高效、易用和轻量级的特点而受到开发者的喜爱。v0.10.0版本的发布带来了多项改进和新功能,包括但不限于bug的修复、新功能的增加、代码重构、单测覆盖率的提升以及文档的完善。
具体来说,新版本中加入了LRemByIndex API以及LKeys、SKeys、ZKeys API,这些API支持对key做正则匹配,方便扫描出所需key,还支持全量扫描,非常实用。此外,还增加了Iterator API,支持HintKeyAndRAMIdxMode和HintKeyValAndRAMIdxMode两种模式,为开发者提供了更加灵活的迭代方式。
NutsDB适用于广泛的场景,如嵌入式应用、存储Meta信息、加密存储、本地队列和本地缓存等。它的高度优化内部架构和分段式存储策略,使得其在内存管理和读写效率上都表现出色。同时,它还支持完整的事务处理,确保了操作的原子性和数据的一致性。
总之,NutsDB v0.10.0版本的发布是Go语言键值存储引擎领域的一个重要里程碑。我相信,在未来的发展中,NutsDB将继续为开发者提供更加高效、易用和可靠的键值存储解决方案。