Go入门笔记40-leveldb相关的库

1、GoLevelDB
https://github.com/syndtr/goleveldb
功能较少,只有Get,Put,Delete,Interator几个功能
使用示例:

iter := db.NewIterator(nil, nil)
	for iter.Next() {
		key := iter.Key()
		...
	}

2、ledisdb
https://github.com/ledisdb/ledisdb
和SSDB类似,但是可以以文件打开方式运行

下面是ledisdb使用示例

package main

import (
	"fmt"

	lediscfg "github.com/ledisdb/ledisdb/config"
	"github.com/ledisdb/ledisdb/ledis"
)

func main() {
	cfg := lediscfg.NewConfigDefault()
	l, _ := ledis.Open(cfg)
	db, _ := l.Select(0)
	db.FlushAll()
	db.Set(([]byte)("a"), ([]byte)("123"))
	db.Set(([]byte)("b"), ([]byte)("123"))
	db.Set(([]byte)("c"), ([]byte)("123"))
	db.Set(([]byte)("d"), ([]byte)("123"))
	db.Set(([]byte)("e"), ([]byte)("123"))
	keys1, _ := db.Scan(ledis.DataType(ledis.KV), nil, 10000, false, "")
	for i := 0; i < len(keys1); i++ {
		fmt.Printf(string(keys1[i]) + ",")
	}
	fmt.Printf("\n")

	db.HSet(([]byte)("A"), ([]byte)("a1"), ([]byte)("1111"))
	db.HSet(([]byte)("A"), ([]byte)("a2"), ([]byte)("2222"))
	db.HSet(([]byte)("A"), ([]byte)("a3"), ([]byte)("3333"))

	db.HSet(([]byte)("B"), ([]byte)("b1"), ([]byte)("1111"))
	db.HSet(([]byte)("B"), ([]byte)("b2"), ([]byte)("2222"))
	db.HSet(([]byte)("B"), ([]byte)("b3"), ([]byte)("3333"))
	keys2, _ := db.Scan(ledis.DataType(ledis.HASH), nil, 10000, false, "")
	for i := 0; i < len(keys2); i++ {
		fmt.Printf(string(keys2[i]) + "\n")
		keys3, _ := db.HScan(keys2[i], nil, 10000, false, "")
		for j := 0; j < len(keys3); j++ {

			fmt.Printf(string(keys3[j].Field) + ":" + string(keys3[j].Value) + ",")
		}
		fmt.Printf("\n")
	}
	fmt.Printf("\n")
}

输出结果
a,b,c,d,e,
A
a1:1111,a2:2222,a3:3333,
B
b1:1111,b2:2222,b3:3333,

3、SSDB
https://ssdb.io/zh_cn/
暂时还没用。

posted @ 2021-09-05 21:31  zhaogaojian  阅读(220)  评论(0编辑  收藏  举报