Go 使用leveldb

简介
LevelDB是一个由Google公司所研发的键-值存储嵌入式数据库管理系统编程库

leveldb是一个写性能十分优秀的存储引擎,是典型的LSM树(Log Structured-Merge Tree)实现。LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力

比较使用读少写多的一种场景.以太坊、区块链

特点

  1. key和value都是任意长度的字节数据
  2. 提供了基本的增删改查接口
  3. 自动使用Snappy压缩数据
  4. 通过向前或者向后迭代器遍历数据
  5. 不支持sql语句, 不支持索引
  6. 一次只允许一个进程访问一个特定的数据库

初始化:

db, err := leveldb1.CreateLevelDB("./leveldb_data")
if err != nil {
    log.Println("err:",err)
}
//k - v
//k - v
	err = db.Put("test", "test")
	if err != nil {
		log.Println("err:",err)
	}
	val,err := db.Get("test")
	if err != nil {
		log.Println("err:",err)
	}
	log.Println("get data:", string(val))
//struct
//struct
    type Demo struct {
        Phone     string
        ChannelId int
        Reason    string
    }
    d := new(Demo)

    d.Phone = "18745682512"
    d.ChannelId = 1
    d.Reason = "黑名单用户"

    db.Put("user-1", &d)
    obVal,err := db.Get("user-1")
    if err != nil {
        log.Println("err:",err)
    }
    log.Println("get data:", string(obVal))
//map
//map
    a := make(map[string]interface{})
    a["id"] = 1
    a["name"] = "map"

    db.Put("m", a)
    mVal,err := db.Get("m")
    if err != nil {
        log.Println("err:",err)
    }
    log.Println("get data:", string(mVal))

  


返回值参考:

 

 

  

  

posted @ 2022-08-25 16:35  知子  阅读(517)  评论(0编辑  收藏  举报