一個 Go 語言實現的高性能 NoSQL 數據庫
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 語言學習項目?!
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/fo_hhABF8leihxSp7YSt2Q