前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go: LevelDb的简介与实践

Go: LevelDb的简介与实践

作者头像
Freedom123
发布2024-03-29 13:56:11
1030
发布2024-03-29 13:56:11
举报
文章被收录于专栏:DevOpsDevOps

简介

LevelDB是一个由Google公司所研发的键-值存储嵌入式数据库管理系统编程库。leveldb是一个写性能十分优秀的存储引擎,是典型的LSM树(Log Structured-Merge Tree)实现。LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力。比较使用读少写多的一种场景.以太坊、区块链。

一、特性

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

二、安装

由于leveldb依赖Snapy压缩,所以需要下载snappy库。小编基于goleveldb封装了一个使用leveldb的包,放在了github上,需有兴趣可以点击左侧连接下载使用。包括Put、Get、Has、Delete、SelectAll。在项目中引用

代码语言:javascript
复制
go get github.com/jeffcail/leveldb 

三、使用

1 .创建leveldb连接,会在项目目录下生成一个level_data文件夹,用来保存数据

代码语言:javascript
复制
var (
	db  *leveldb1.LevelDB
	err error
)

func init() {
	db, err = leveldb1.CreateLevelDB("./level_data")
	if err != nil {
		panic(err)
	}
}

2.保存

代码语言:javascript
复制
func main() {
	save()
}

func save() {
	type User struct {
		ID   int
		Name string
		Age  int
		Sex  string
	}

	u := &User{}
	u.ID = 1
	u.Name = "jeffcail"
	u.Age = 18
	u.Sex = "男"

	db.Put("user-1", u)
  db.Put("test", "太阳上的雨天 blog.caixiaoxin.cn")
}

3.获取条数据

代码语言:javascript
复制
func main() {
	getUser()
}
func getUser() {
	user, err := db.Get("user-1")
	if err != nil {
		panic(err)
	}

	fmt.Printf("user=====%s\n", user)
}

4.查询全部

代码语言:javascript
复制
func main() {
	selectAll()
}

func selectAll() {
	iter := db.SelectAll()
	for iter.Next() {
		k := iter.Key()
		v := iter.Value()
		fmt.Printf("k: %s\n", k)
		fmt.Printf("v: %s\n", v)
	}
	iter.Release()
	err = iter.Error()
	if err != nil {
		panic(err)
	}
}

5.查询key是否存在

代码语言:javascript
复制
func main() {
	has()
}

func has() {
	if ok, _ := db.Has("test"); !ok {
		fmt.Printf("key 为%s\n不存在", "test")
	}
	fmt.Printf("key 为%s\n存在", "test")
}

6.删除

代码语言:javascript
复制
func main() {
	del()
}

func del() {
	err = db.Delete("test")
	if err != nil {
		panic(err)
	}
}

小结

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 一、特性
  • 二、安装
  • 三、使用
  • 小结
相关产品与服务
数据库智能管家 DBbrain
数据库智能管家(TencentDB for DBbrain,DBbrain)是腾讯云推出的一款为用户提供数据库性能、安全、管理等功能的数据库自治云服务。DBbrain 利用机器学习、大数据手段、专家经验引擎快速复制资深数据库管理员的成熟经验,将大量传统人工的数据库运维工作智能化,服务于云上和云下企业,有效保障数据库服务的安全、稳定及高效运行。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档