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/

暂时还没用。