Golang键值存储Nutsdb v0.3.0版本发布

Golang键值存储Nutsdb v0.3.0版本发布 NutsDB 是一个简单、快速、可嵌入的持久化键值存储,采用纯 Go 语言编写。它支持完全可序列化的事务以及多种类似 Redis 的数据结构,如列表、集合、有序集合等。

详情请参阅 https://github.com/xujiajun/nutsdb

v0.3.0 版本已发布

  • 支持持久化
  • 弃用 mmap 包(该包的 Flush 函数可能存在错误)
  • 弃用 EntryIdxMode 选项:HintAndRAMIdxModeHintAndMemoryMapIdxMode
  • 新增 EntryIdxMode 选项:HintKeyValAndRAMIdxModeHintKeyAndRAMIdxMode
  • 修复当 fn 为 nil 时的问题
  • 更新 README 和 CHANGELOG

更多关于Golang键值存储Nutsdb v0.3.0版本发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang键值存储Nutsdb v0.3.0版本发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


NutsDB v0.3.0的发布确实带来了几个重要的改进和修复。作为纯Go编写的键值存储,它在性能和功能上都有显著提升。以下是对关键更新的技术分析:

持久化支持:这是核心增强,确保了数据在重启后的可靠性。示例代码展示基本操作:

package main

import (
	"log"
	"github.com/xujiajun/nutsdb"
)

func main() {
	opt := nutsdb.DefaultOptions
	opt.Dir = "/tmp/nutsdb"
	db, err := nutsdb.Open(opt)
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// 写入数据(自动持久化)
	err = db.Update(func(tx *nutsdb.Tx) error {
		return tx.Put("bucket", []byte("key"), []byte("value"), 0)
	})
	if err != nil {
		log.Fatal(err)
	}
}

EntryIdxMode变更:新增的HintKeyValAndRAMIdxModeHintKeyAndRAMIdxMode提供了更灵活的索引策略。前者存储键值对,后者仅存储键,适用于不同内存使用场景:

opt := nutsdb.DefaultOptions
opt.EntryIdxMode = nutsdb.HintKeyValAndRAMIdxMode // 或 HintKeyAndRAMIdxMode

弃用mmap包:由于Flush函数潜在问题,移除mmap提高了稳定性。现在默认使用更可靠的持久化机制。

nil函数修复:解决了当回调函数为nil时的潜在崩溃问题,增强了代码健壮性。

这些更新使NutsDB更适合生产环境,特别是在需要事务性操作和多种数据结构的场景中。与Redis API的相似性降低了迁移成本,而纯Go实现保证了跨平台兼容性。

回到顶部