社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NoSql

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

Go语言中文网 • 4 年前 • 558 次点击  

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 交流学习。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/114021
 
558 次点击