-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Li Donghai edited this page Jan 13, 2018
·
11 revisions
- 纯golang编写
- 10亿级数据量支持
- 集成先进先出数据队列
- 支持KV集合 (z-list有序集合,主键不允许重复)
- 支持 TTL 超时自动删除及通知事件
- 支持嵌入式设备OpenWrt等系统 (ARM/MIPS)
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()
kv.OnExpirse = func(key, value []byte) {
fmt.Println("exp:", string(key), string(value))
}
kv.Put([]byte("hello1"), []byte("hello value"), 0)//key值,value值, 0为永不超时
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