Go 使用leveldb

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

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

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

特点

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

初始化:

1
2
3
4
db, err := leveldb1.CreateLevelDB("./leveldb_data")
if err != nil {
    log.Println("err:",err)
}
//k - v
1
2
3
4
5
6
7
8
9
10
//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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//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
1
2
3
4
5
6
7
8
9
10
11
//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 @   知子  阅读(577)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示