惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
博客园_首页
M
MIT News - Artificial intelligence
雷峰网
雷峰网
GbyAI
GbyAI
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
S
SegmentFault 最新的问题
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
V
Visual Studio Blog
月光博客
月光博客
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队

博客园 - qufo

Golang 线程池 Docker 实现的 redis 主从 Golang 之 Base62 编码 Golang 之 Qrcode 二维码 无废话 Thrift 之 Hello World( PHP 版). [转] putty 使用密钥登陆 OpenSSH 一个视图引发的血案 破一个行业ERP的感想 Practical Ext JS Projects with Gears中关于Gears描述。 七七前一天,搞定 PHP5 + Oracle 8.1.7 去掉PowerDesigner 15 在 Visual Studio 2008里的不兼容。 回家 庆祝自己通过驾驶员考试 2008.08.08.一个有记住意义的时刻。 adverbux.com 明天路考 blank.security 距离2008年8月8日还有8天。 随时10个可用线程--自己涂鸦的“线程池”
Golang 之 key-value LevelDB
qufo · 2016-07-24 · via 博客园 - qufo

时常会在应用中用到数据库功能,象 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("10000"),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+1),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
}