一个 Go 语言实现的高性能 NoSQL 数据库

共 1772字,需浏览 4分钟

 ·

2021-05-10 17:57

NoSQL 数据库和关系数据库一样被广泛使用,虽然已经存在了很多成熟的产品,但依然有一些新产品出现。今天推荐的这款开源产品是使用 Go 语言实现的。

项目地址:https://github.com/ledisdb/ledisdb,Star 数 3.5k+。

Ledisdb 是用 Go 编写的高性能 NoSQL 数据库库和服务器。它类似于 Redis,但将数据存储在磁盘中。它支持许多数据结构,包括 kv,list,hash,zset,set 等。

此外 LedisDB 支持多个不同的数据库作为后端。具体特性如下:

  • 丰富的数据结构:KV, List, Hash, ZSet, Set。
  • 数据存储不受 RAM 限制。
  • 支持各种后端:LevelDB,goleveldb,RocksDB,RAM。
  • 支持 Lua 脚本。
  • 支持到期和 TTL。
  • 可以通过 redis-cli 进行管理,即兼容 Redis 协议。
  • 易于嵌入您自己的 Go 应用程序中。
  • HTTP API 支持,JSON/BSON/msgpack 输出。
  • Replication 以保证数据安全。
  • 提供用于加载,转储和修复数据库的工具。
  • 支持集群,使用 xcodis 这个工具。
  • 身份验证(尽管不能通过 http)。
  • 集成修复:如果您是从 v0.4 升级的,则可以使用 ledis 修复来修复损坏的数据库,并可以使用 ledis repair-ttl 修复非常严重的密钥过期和 TTL 错误。

作为 Server 的例子:

//set run environment if not
source dev.sh

./bin/ledis -config=/etc/ledis.conf

//another shell
./bin/ledis cli -p 6380

ledis 127.0.0.1:6380> set a 1
OK
ledis 127.0.0.1:6380> get a
"1"

//use curl
curl http://127.0.0.1:11181/SET/hello/world
→ {"SET":[true,"OK"]}

curl http://127.0.0.1:11181/0/GET/hello?type=json
→ {"GET":"world"}

作为 Go 包使用的例子:

import (
    lediscfg "github.com/ledisdb/ledisdb/config"
    "github.com/ledisdb/ledisdb/ledis"
)

# Use Ledis's default config
cfg := lediscfg.NewConfigDefault()
l, _ := ledis.Open(cfg)
db, _ := l.Select(0)

db.Set(key, value)

db.Get(key)

虽然不知道有没有人用于生产环境,但至少可以作为 Go 语言学习项目?


文末「阅读原文」可直达项目首页。


今天的项目大家觉得怎么样吗?如果你喜欢,请在文章底部留言、点赞或关注转发,你的支持就是我持续更新的最大动力!



推荐阅读


福利

我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。

浏览 49
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报