文档章节

LevelDB 编译安装(Debian 8)

norxiva
 norxiva
发布于 2016/07/13 13:53
字数 396
阅读 77
收藏 0

环境信息

虚拟机节点(192.168.100.171<debian171>)

Debian jessie 8.5 

LevelDB 1.18

安装leveldb

sudo apt-get install libsnappy-dev
sudo tar xvf leveldb-1.18.tar.gz
cd leveldb-1.18/
sudo make
sudo cp libleveldb.so.1.18 /usr/local/lib
sudo cp libleveldb.a /usr/local/lib
sudo cp -R include/leveldb /usr/local/include
cd /usr/local/lib
sudo ln -s libleveldb.so.1.18 libleveldb.so
sudo ln -s libleveldb.so.1.18 libleveldb.so.1
sudo ldconfig

java代码

package surfin.example.leveldb.simpledemo;

import static org.iq80.leveldb.impl.Iq80DBFactory.asString;
import static org.iq80.leveldb.impl.Iq80DBFactory.bytes;
import static org.iq80.leveldb.impl.Iq80DBFactory.factory;

import java.io.File;
import java.io.IOException;

import org.iq80.leveldb.DB;
import org.iq80.leveldb.DBComparator;
import org.iq80.leveldb.DBIterator;
import org.iq80.leveldb.Options;
import org.iq80.leveldb.ReadOptions;
import org.iq80.leveldb.WriteBatch;
import org.iq80.leveldb.WriteOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SimpleDemoBootstrap {
	private static final Logger log = LoggerFactory.getLogger(SimpleDemoBootstrap.class);

	public static void main(String[] args) {

		Options options = new Options();
		options.createIfMissing(true);
		DB db = null;
		try {
			db = factory.open(new File("D:/leveldb-example/simpledemo"), options);
			
			//put get delete
			db.put(bytes("Tampa"), bytes("rocks"));
			byte[] tampa_b = db.get(bytes("Tampa"));
			log.info("Tampa: {}", asString(tampa_b));
			WriteOptions wo = new WriteOptions().sync(true);
			db.delete(bytes("Tampa"), wo);
			tampa_b = db.get(bytes("Tampa"));
			log.info("Tampa: {}", asString(tampa_b));

			//write batch
			WriteBatch wb = db.createWriteBatch();
			try{
				
				wb.put(bytes("Tampa"), bytes("green"));
				wb.put(bytes("London"), bytes("red"));
				db.write(wb);
			}finally{
				wb.close();
			}
			
			//Iterating key/values.
			DBIterator iter = db.iterator();
			try{
				for(iter.seekToFirst();iter.hasNext();iter.next()){
					String key = asString(iter.peekNext().getKey());
					String val = asString(iter.peekNext().getValue());
					log.info("iter {}:{}", key, val);
				}
				
			}finally{
				iter.close();
			}
			
			
			//Working against a Snapshot view of the Database.
			ReadOptions ro = new ReadOptions();
			ro.snapshot(db.getSnapshot());
			try {
				iter = db.iterator(ro);
				try{
					for(iter.seekToFirst();iter.hasNext();iter.next()){
						String key = asString(iter.peekNext().getKey());
						String val = asString(iter.peekNext().getValue());
						log.info("snapshot iter {}:{}", key, val);
					}
					
					log.info("snapshot Tampa: {}",asString(db.get(bytes("Tampa"), ro)));
					
				}finally{
					iter.close();
				}

			} finally {
			  // Make sure you close the snapshot to avoid resource leaks.
			  ro.snapshot().close();
			}
			
			//OUsing a custom Comparator.

			DBComparator comparator = new DBComparator(){
			    public int compare(byte[] key1, byte[] key2) {
			        return new String(key1).compareTo(new String(key2));
			    }
			    public String name() {
			        return "simple";
			    }
			    public byte[] findShortestSeparator(byte[] start, byte[] limit) {
			        return start;
			    }
			    public byte[] findShortSuccessor(byte[] key) {
			        return key;
			    }
			};
			
//			log.info(String.valueOf(System.currentTimeMillis()));
			

		} catch (IOException e) {
			log.error(e.getMessage(), e);
		}finally{
			if(db != null){
				try {
					db.close();
				} catch (IOException e) {
					log.error(e.getMessage(), e);
				}
			}
		}
	}
}

pom依赖

<dependency>
	<groupId>org.iq80.leveldb</groupId>
	<artifactId>leveldb</artifactId>
</dependency>

参考资料

https://gist.github.com/dustismo/6203329

https://techoverflow.net/blog/2012/12/14/compiling-installing-leveldb-on-linux/

© 著作权归作者所有

共有 人打赏支持
norxiva
粉丝 0
博文 11
码字总数 5308
作品 0
徐汇
高级程序员
leveldb-rust-b Rust 编译出错

src/leveldb/lib.rs:12:1: 12:19 warning: this inner attribute syntax is deprecated. The new syntax is , with a bang and no semicolon. src/leveldb/lib.rs:12 #[feature(globs)]; ^~ ......

MtrS
2014/05/27
0
0
发布一个参考ssdb,用go实现的类似redis的高性能nosql:ledisdb

起因 ledisdb是一个参考ssdb,采用go实现,底层基于leveldb,类似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。 我们现在的应用极大的依赖redis,但随着我们用户...

siddontang
2014/05/11
0
1
一个参考ssdb,使用go类似的实现redis高性能nosql:ledisdb

起因 ledisdb是一个參考ssdb。採用go实现,底层基于leveldb,相似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。 我们如今的应用极大的依赖redis。但随着我们用户...

mickelfeng
06/08
0
0
Derek解读Bytom源码-持久化存储LevelDB

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍Derek解读-Bytom源码分析-持久化存储LevelDB 作者使用MacOS操作...

比原链bytom
08/24
0
0
高性能nosql ledisdb设计与实现(1)

ledisdb是一个用go实现的基于leveldb的高性能nosql数据库,它提供多种数据结构的支持,网络交互协议参考redis,你可以很方便的将其作为redis的替代品,用来存储大于内存容量的数据(当然你的...

siddontang
2014/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据框架对比:Hadoop、Storm、Samza、Spark和Flink

简介 大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模...

hblt-j
29分钟前
2
0
正则介绍及grep/egrep用法

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 9.1 正则介绍_grep上 什么是正则 ...

zgxlinux
45分钟前
2
0
想用Unity3D引擎软件赚点钱的看过来

前言: 你可以不拥有很多钱 但你一定要有赚钱的能力 目前手上有项目, 需要熟练Unity3D引擎软件的伙伴 有意向的给我发私信

猿神出窍
47分钟前
2
0
Spring Boot全局异常处理

Spring Boot默认的异常处理机制 默认情况下,Spring Boot为两种情况提供了不同的响应方式。 一种是浏览器客户端请求一个不存在的页面或服务端处理发生异常时,一般情况下浏览器默认发送的请求...

狼王黄师傅
今天
8
0
Thinkphp5 优雅配置两个数据库

工作需要需要配置两个数据库,框架5.0的,步骤如下: 1、在database.php同级创建一个database2.php文件 在里面配置第二个数据库信息, 2、在config中配置这个数据库信息: 3、创建第二个表的...

wqzbxh
今天
5
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部