Golang 之 key-value LevelDB
时常会在应用中用到数据库功能,象 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的更多相关文章
- Derek解读Bytom源码-持久化存储LevelDB
作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom ...
- Golang 数组、切片、映射
定义数组 var arr1 [5]int //整型类型 fmt.Println(arr1) //[0 0 0 0 0] //赋值 arr1 = [5]int{1, 2, 3, 4, 5} fmt.Pr ...
- 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 ...
- Leveldb源码解析之Bloom Filter
Bloom Filter,即布隆过滤器,是一种空间效率很高的随机数据结构. 原理:开辟m个bit位数组的空间,并全部置零,使用k个哈希函数将元素映射到数组中,相应位置1.如下图,元素K通过哈希函数h1 ...
- SSTable 介绍(一)
如果说Protocol Buffers是Google内部表示独立数据记录的单元,那么排序的字符串表--Sorted String Table(SSTable)--是存储,处理和交换数据集的最流行的输出 ...
- ssdb的高可用,源码分析
ssdb,一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.——这是其官网的自我介绍. ssdb在leveldb存储库的基础上进行改造和丰富,添加了类似redis操作的接口, ...
- LevelDB性能测试|Golang调用LevelDB
LevelDB性能测试|Golang调用LevelDB 不同方式使用压力测试 用ssdb,TCP连接方式调用,底层存储levelDB 直接调用Cgo的levelDB (必须保证串行) 直接调用Gola ...
- golang print struct with key
https://play.golang.org/p/YMfpuluzef 判断结构体是否为空 打印带attribute(key) 的结构体 package main import ( "fm ...
- 161104、NoSQL数据库:key/value型之levelDB介绍及java实现
简介:Leveldb是一个google实现的非常高效的kv数据库,能够支持billion级别的数据量了. 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计.特别是LSM算法.LevelDB ...
- 在golang中使用leveldb
leveldb是一个很强悍的kv数据库,自然,我也希望能在go中使用. 如果有官方的go leveldb实现,那我会优先考虑,譬如这个,但是该库文档完全没有,并且在网上没发现有人用于实战环境,对其能否 ...
随机推荐
- 【转】Jmeter之短板以及建议解决方案
随着JMeter的应用,发现JMeter的局限性越来越多,急需进一步扩展改进. 一.几百兆的sample 日志解析出现OutOfMemory 最近的几个项目都是Java sample 日志,应用都是高 ...
- Memcached: temple
ylbtech-Memcached: temple 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 ...
- Java web概述
声明:为了使初学者能更好的了解java web,所以我整理了下资料,概述了web应用程序. 一.web概述 静态web资源:内容是静态的,不同的人在不同的时间来访问时都是相同的内容.HTML.CSS. ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget(第二部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- maven引入源码
选中要添加的源码的项目右键-->debug--->debugs-configurations-->source-->java project
- 第六篇 Flask 中内置的 Session
Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from ...
- http协议及web框架
http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...
- myBaits缓存
转自:https://blog.csdn.net/zhongzh86/article/details/50019511 9. Mybatis 缓存 正如大多数持久层框架一样,MyBatis 同样提供了 ...
- Python的输入输出
一:Python2.x版本下的输入输出 Python2.x 下的输入 1)raw_input 格式:result = raw_input("提示信息")功能:1)会等待用户输入内容 ...
- Python 小练习三 发邮件
import smtplib,os from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipar ...