类似于redis,基于bitcask
内核的k-v数据库。支持事务,resp,http接口,提供以Btree,AdaptiveRadixTree,B+tree为基础的索引。
要部署这个项目,请运行
go get https://github.com/lustresix/lxdb
package main
import (
"fmt"
LustreDB "github.com/lustresix/lxdb"
)
func main() {
// simple
options := LustreDB.DefaultOptions
db, _ := LustreDB.Open(options)
err = db.Put([]byte("hello"), []byte("world1"))
get, _ := db.Get([]byte("hello"))
fmt.Println("val = ", string(get))
_ = db.Delete([]byte("hello"))
// Transaction
batchOptions := LustreDB.DefaultWriteBatchOptions
wb := open.NewWriteBatch(batchOptions)
_ = wb.Put([]byte("hello1"), []byte("world1"))
_ = wb.Delete([]byte("hello1"))
err = wb.Commit()
if err != nil {
return
}
}
启动数据库
.\cmd
打开redis-cli
redis-cli -p 6380
.\http
端口: 8080
[GIN-debug] POST /put --> main.CommonApi.PutApi-fm (3 handlers)
[GIN-debug] POST /get --> main.CommonApi.GetApi-fm (3 handlers)
[GIN-debug] POST /delete --> main.CommonApi.DelApi-fm (3 handlers)
[GIN-debug] GET /list --> main.CommonApi.ListApi-fm (3 handlers)
POST /put
参数 | 类型 | 描述 |
---|---|---|
data |
map[string]string |
必选. key and value |
GET /get
参数 | 类型 | 描述 |
---|---|---|
key |
[]string |
必选. 要获取的value的key |
POST /delete
参数 | 类型 | 描述 |
---|---|---|
key |
[]string |
必选. 要删除的key |
GET /list
语言: Golang
内核基础: Bitcask
上传事务,自增seq,完成时为seq+tex-fin
如果没有读取到则说明事务失败,不保存到索引中
- IO优化(文件锁,分区缓存)。
- 兼容Redis协议和命令。
- 支持http服务。
- 支持tcp服务。
- 数据备份。
- 分布式集群。
如果你有任何反馈,请联系我:1911827241@qq.com