时常会在应用中用到数据库功能,象 Key-Value 性质的。直接搬个 Redis,Mysql嫌大,好在有 LevelDB,直接编进应用中。

有关什么是 LevelDB 以及 LevelDB 的特性,可Google之,我们看看如何用。

先要

go get github.com/syndtr/goleveldb/leveldb

然后在文件中 import 进来。

1.打开数据库

db,err = leveldb.OpenFile("./db",nil)
if (err != nil) { panic(err) }

如果这里如果有错,直接报了。

2.然后,读用 db.Get, 写用 db.Put 。

3.代码中的一小段。

package main

import (
"github.com/syndtr/goleveldb/leveldb"
"fmt"
"strconv"
) var db *leveldb.DB const ID_FIELD = "id" func init(){
var err error
db,err = leveldb.OpenFile("./db",nil)
if (err != nil) {
panic(err)
} _,err = db.Get([]byte(ID_FIELD),nil)
if (err!=nil) {
db.Put([]byte(ID_FIELD),[]byte(""),nil)
}
} func GetNextId() int {
ids,err := db.Get([]byte(ID_FIELD),nil)
if (err != nil) {
fmt.Println(err)
}
id := Byte2int(ids)
db.Put([]byte(ID_FIELD),Int2byte(id+),nil)
return id
} func Byte2int(val []byte) int {
var result int
result,_ = strconv.Atoi(string(val))
return result
} func Int2byte(val int) []byte {
result := []byte(strconv.Itoa(val))
return result
}

Golang 之 key-value LevelDB的更多相关文章

  1. Derek解读Bytom源码-持久化存储LevelDB

    作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom ...

  2. Golang 数组、切片、映射

    定义数组 var arr1 [5]int //整型类型 fmt.Println(arr1) //[0 0 0 0 0] //赋值 arr1 = [5]int{1, 2, 3, 4, 5} fmt.Pr ...

  3. Learn golang: Top 30 Go Tutorials for Programmers Of All Levels

    https://stackify.com/learn-go-tutorials/ What is Go Programming Language? Go, developed by Google in ...

  4. Leveldb源码解析之Bloom Filter

    Bloom Filter,即布隆过滤器,是一种空间效率很高的随机数据结构. 原理:开辟m个bit位数组的空间,并全部置零,使用k个哈希函数将元素映射到数组中,相应位置1.如下图,元素K通过哈希函数h1 ...

  5. SSTable 介绍(一)

    如果说Protocol Buffers是Google内部表示独立数据记录的单元,那么排序的字符串表--Sorted String Table(SSTable)--是存储,处理和交换数据集的最流行的输出 ...

  6. ssdb的高可用,源码分析

    ssdb,一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.——这是其官网的自我介绍. ssdb在leveldb存储库的基础上进行改造和丰富,添加了类似redis操作的接口, ...

  7. LevelDB性能测试|Golang调用LevelDB

    LevelDB性能测试|Golang调用LevelDB 不同方式使用压力测试 用ssdb,TCP连接方式调用,底层存储levelDB 直接调用Cgo的levelDB (必须保证串行) 直接调用Gola ...

  8. golang print struct with key

    https://play.golang.org/p/YMfpuluzef 判断结构体是否为空 打印带attribute(key) 的结构体 package main import ( "fm ...

  9. 161104、NoSQL数据库:key/value型之levelDB介绍及java实现

    简介:Leveldb是一个google实现的非常高效的kv数据库,能够支持billion级别的数据量了. 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计.特别是LSM算法.LevelDB ...

  10. 在golang中使用leveldb

    leveldb是一个很强悍的kv数据库,自然,我也希望能在go中使用. 如果有官方的go leveldb实现,那我会优先考虑,譬如这个,但是该库文档完全没有,并且在网上没发现有人用于实战环境,对其能否 ...

随机推荐

  1. 【转】Jmeter之短板以及建议解决方案

    随着JMeter的应用,发现JMeter的局限性越来越多,急需进一步扩展改进. 一.几百兆的sample 日志解析出现OutOfMemory 最近的几个项目都是Java sample 日志,应用都是高 ...

  2. Memcached: temple

    ylbtech-Memcached: temple 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   ...

  3. Java web概述

    声明:为了使初学者能更好的了解java web,所以我整理了下资料,概述了web应用程序. 一.web概述 静态web资源:内容是静态的,不同的人在不同的时间来访问时都是相同的内容.HTML.CSS. ...

  4. [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget(第二部分)

    本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...

  5. maven引入源码

    选中要添加的源码的项目右键-->debug--->debugs-configurations-->source-->java project

  6. 第六篇 Flask 中内置的 Session

    Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from ...

  7. http协议及web框架

    http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...

  8. myBaits缓存

    转自:https://blog.csdn.net/zhongzh86/article/details/50019511 9. Mybatis 缓存 正如大多数持久层框架一样,MyBatis 同样提供了 ...

  9. Python的输入输出

    一:Python2.x版本下的输入输出 Python2.x 下的输入 1)raw_input 格式:result = raw_input("提示信息")功能:1)会等待用户输入内容 ...

  10. Python 小练习三 发邮件

    import smtplib,os from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipar ...