https://github.com/jacoblai/yiyidb
YIYIDB 高性能no-sql数据库
https://github.com/jacoblai/yiyidb
golang kvdb nosql queue yiyidb
Last synced: 5 months ago
JSON representation
YIYIDB 高性能no-sql数据库
- Host: GitHub
- URL: https://github.com/jacoblai/yiyidb
- Owner: jacoblai
- Created: 2017-04-13T00:26:27.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2021-06-22T06:26:22.000Z (about 5 years ago)
- Last Synced: 2024-06-19T17:50:32.031Z (about 2 years ago)
- Topics: golang, kvdb, nosql, queue, yiyidb
- Language: Go
- Homepage: http://coolpy.net
- Size: 194 KB
- Stars: 10
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# YIYIDB 高性能no-sql数据库
[](http://www.icoolpy.com/) [](https://github.com/jacoblai/dhdb) [](https://github.com/jacoblai/dhdb)
## 功能支持
* 纯Go编写
* 10亿级数据量支持
* 集成先进先出数据队列
* 支持KV集合 (Z-LIST有序集合,主键不允许重复)
* 支持 TTL 超时自动删除及通知事件
* 支持嵌入式设备OPENWRT等系统 (ARM/MIPS)
## 使用说明
* 中文手册参阅[项目WIKI!](https://github.com/jacoblai/yiyidb/wiki)
* 更多示例代码参阅项目 *_test.go 文件
## 快速上手
```
import "github.com/jacoblai/yiyidb"
```
## 重打开或创建一个数据库
```
//取到当前程序所在物理位置
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
panic(err)
}
//创建或重打开数据库
//参数1 数据库路径,
//参数2 是否开启同库数据分组(chan库开启标识)
//参数3 是否开启ttl自动删除记录,当开启ttl后put操作的ttl才会生效
//参数4 数据碰测优化,输入可能出现key的最大长度
kv, err := yiyidb.OpenKvdb(dir+"/yiyidb", false, false, 10)
if err != nil {
panic(err)
}
defer kv.Close()
```
## 注册当TTL超时删除事件通知
```
kv.OnExpirse = func(key, value []byte) {
fmt.Println("exp:", string(key), string(value))
}
```
## 插入一条记录,(当重复Put同key时操作等同于更新内容操作)
```
kv.Put([]byte("hello1"), []byte("hello value"), 0)//key值,value值, 0为永不超时
```
## 设置一条已存在记录并8秒后超时自动删除
```
kv.SetTTL([]byte("hello1"), 8)
```
## 删除一条记录
```
kv.Del([]byte("hello1"))
```
## 性能
## 插入队列压力测试
300,000 5865ns/op 516B/op 9allocs/op
## 取出队列压力测试
200,000 14379ns/op 1119B/op 20allocs/op
## 作者
@jacoblai
## 感谢
* syndtr, github.com/syndtr/goleveldb