创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。 个人博客:太阳上的雨天 地址:http://blog.caixiaoxin.cn 善于分享,希望有助他人. 非常感谢各位大佬的关注和支持
LevelDB是一个由Google公司所研发的键-值存储嵌入式数据库管理系统编程库
leveldb是一个写性能十分优秀的存储引擎,是典型的LSM树(Log Structured-Merge Tree)实现。LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力
比较使用读少写多的一种场景.以太坊、区块链
由于leveldb依赖Snapy压缩,所以需要下载snappy库
小编基于goleveldb封装了一个使用leveldb的包,放在了github上,需有兴趣可以点击左侧连接下载使用。包括Put、Get、Has、Delete、SelectAll
在项目中引用
go get github.com/jeffcail/leveldb
1 .创建leveldb连接,会在项目目录下生成一个level_data文件夹,用来保存数据
var (
db *leveldb1.LevelDB
err error
)
func init() {
db, err = leveldb1.CreateLevelDB("./level_data")
if err != nil {
panic(err)
}
}
2.保存
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.获取条数据
func main() {
getUser()
}
func getUser() {
user, err := db.Get("user-1")
if err != nil {
panic(err)
}
fmt.Printf("user=====%s\n", user)
}
执行结果:
user====={“ID”:1,“Name”:“jeffcail”,“Age”:18,“Sex”:“男”}
4.查询全部
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)
}
}
执行结果:
k: test
v: “太阳上的雨天 blog.caixiaoxin.cn”
k: user-1
v: {“ID”:1,“Name”:“jeffcail”,“Age”:18,“Sex”:“男”}
5.查询key是否存在
func main() {
has()
}
func has() {
if ok, _ := db.Has("test"); !ok {
fmt.Printf("key 为%s\n不存在", "test")
}
fmt.Printf("key 为%s\n存在", "test")
}
执行结果:
key 为test
存在
6.删除
func main() {
del()
}
func del() {
err = db.Delete("test")
if err != nil {
panic(err)
}
}