erlang使用leveldb

用的是诺顿的开源库,参考url来自这里

下载

git clone [email protected]:/norton/lets.git

编译

cd lets
./rebar get-deps
./rebar compile
cd ebin
erl -pa ../deps/*/ebin

测试

application:start(sasl).
application:start(lets).

OptsDB = [{path, "mytable"}, create_if_missing],
lets:new(mytable, [named_table, compressed, {db, OptsDB}]).
lets:insert(mytable, {"hi", "hello"}).
lets:insert(mytable, {"bye", "goodbye"}).
lets:lookup(mytable, "hi").
时间: 2024-10-10 21:05:37

erlang使用leveldb的相关文章

leveldb 使用场景

最近有个业务写远远大于读,读也集中在最近写入,这不很适合采用leveldb存储么. ssdb 是leveldb的redis兼容协议封装,并且实现了主从同步,源码不多易读:主要对redis命令封装,get/set 不说,leveldb 是有序的,相比redis通过scan遍历的命令,利用有序性 list.hset也通过key+fileld/seq - val 方式存储,ttl 会单独存储一个hset 保存过期时间,由一个单独线程定时轮询删除. 测试场景 机器:两台R720XD E5-2620 2.

深入leveldb-初步认识leveldb

文章参考http://blog.chinaunix.net/uid-26575352-id-3245476.html 1. leveldb简介 leveldb是google两位工程师实现的单机版k-v存储系统,具有以下几个特点 1. key和value都是任意的字节数组,支持内存和持久化存储 2. 数据都是按照key排序 3. 用户可以重写排序函数 4. 包含基本的数据操作接口,Put(key,value),Get(key),Delete(key) 5. 多操作可以当成一次原子操作 6. 用户可

Tair ldb(leveldb存储引擎)实现介绍

简介 tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失, tair 可以配置数据的备份数目, tair 自动将一份数据的不同备份放到不同的主机上, 当有主机发生异常, 无法正常提供服务的时候, 其于的备份会继续提供服务. tair 的总体结构 tair 作为一个分布式系统, 是由一个中心控制节点和一系列的服务节

为什么我要选择erlang+go进行服务器架构

服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 估计很多同学看到这里都会觉得迷惑,go的大名已经如雷贯耳了,但是erlang?这个东东是神马?难道是编程语言?怎么从来没听说过. 这里请允许我先介绍一下使用Erlang开发的比较有名的应用: 一:whatsapp 只凭32个技术人员,如何应付4.5亿的用户?对于刚刚被Facebook用190亿美元收购的WhatsApp来说,答案是Erlang--一种诞生于上世纪80年代的编程语言,终于在此时走到了聚光灯下.

Erlang生成式实现的列表去重、求交集及并集

%集合去重,Acc初始传入为[],存放的是最终的结果 delSame([],Acc) -> Acc; delSame([Pre|T],Acc) ->checkSame([X||X<-T,X=/=Pre],Acc++[Pre]). %求交集 crossList(L1,L2) -> [X||X<-L1,Y<-L2,X=:=Y]. %求并集 mergeList(L1,L2)-> delSame(lists:merge(L1,L2),[]). 总结:(1)erlang的生

erlang 初体验

最近测试了一下 erlang的坑... 如不出意外.... 大家第一眼看到这语法... 心里第一句一定是"我擦.这TM都是啥!!!!!" 没有变量!!! 没有结构体!!! 没有循环!!! 好吧,至少我是这样想的. 找了半天..连个if也不知道怎么写.. 这记录一些基本常识.. -module(module_name)  %%定义模块 括号内的要和文件名相同. -export([fun1/1 fun2/2]) %%这里是导出2个函数对外使用  函数名/参数名. 一个简单的函数定义如下 f

LevelDB源码分析--Iterator

我们先来参考来至使用Iterator简化代码2-TwoLevelIterator的例子,略微修改希望能帮助更加容易立即,如果有不理解请各位看客阅读原文. 下面我们再来看一个例子,我们为一个书店写程序,书店里有许多书Book,每个书架(BookShelf)上有多本书. 类结构如下所示 class Book { private: string book_name_; }; class Shelf { private: vector<Book> books_; }; 如何遍历书架上所有的书呢?一种实

ActiveMQ消息持久化-LevelDB

LevelDB 这种文件系统是从ActiveMQ5.8之后引进的,它和KahaDB非常相似,也是基于文件的本地数据库储存形式,但是它提供比KahaDB更快的持久性.与KahaDB不同的是,它不是使用传统的B-树来实现对日志数据的提前写,而是使用基于索引的LevelDB. <broker brokerName="broker" ... >   ...   <persistenceAdapter>     <levelDB directory="ac

Erlang Application

1.OTP应用组织模式 创建OTP应用时的主要工作集中于保准目录结构的建立和应用元数据的编写.元数据的作用在于让系统获悉应该如何启动和停止应用,还可用于指定应用的依赖项,也就是在应用启动前必须安装或启动哪些其它应用. 2.OTP应用布局 <application-name>[-<version>] | | - doc | - ebin | - include | - priv | - src otp应用布局目录.目录名可以包含版本号.标准子目录包括doc.ebin.include.