java levedb使用一路走过来的那些坑 数据不能彻底删除等问题

关于对leveldb的详细介绍可参考此文 一文了解levedb

1 leveldb库java版

 最开始听人介绍时使用这个库,也一直使用这个库;后发现这个库删除数据后,不能从硬盘上删除,查资料也说是
会在某种情况下会删除掉数据,但是使用过程中,就没见释放硬盘资源。

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

  之前只是用来存一些配置,数据量不大就没太在意;现在想做一些数据缓存,对比了下sqlite等,还是levedb比较好。数据删除问题必须要解决了。于是看levedb源码介绍,发现已经实现了删除释放资源的接口,只是org.iq80.leveldb这个java版本没实现而已。

2 leveldb jni

网上冲啊冲,找到了org.fusesource.leveldbjni;调用c动态库;提供了 db.compactRange(null, null) 方法;可以解决数据删除释放硬盘资源问题;此外缓存数据数据压缩之前java版本库效果更好。
  此包提供了linux32、linux64、osx、window32、window64版本的动态库。

      <dependency>
          <groupId>org.fusesource.leveldbjni</groupId>
          <artifactId>leveldbjni-all</artifactId>
          <version>1.8</version>
      </dependency>

linux64-aarch64(arm64v8) 

       <dependency>
            <groupId>org.openlabtesting.leveldbjni</groupId>
            <artifactId>leveldbjni-linux64-aarch64</artifactId>
            <version>1.8</version>
        </dependency>


  

3 其他系统问题处理

 由于程序是运行在树莓派arvm7上的,leveldbjni-all中被没有提供,需要下载源码编译,放在系统文件夹中即可;

下载源码

snappy下载失败的可以到此下载

wget http://snappy.googlecode.com/files/snappy-1.0.5.tar.gz
tar -zxvf snappy-1.0.5.tar.gz
git clone git://github.com/chirino/leveldb.git
git clone git://github.com/fusesource/leveldbjni.git
export SNAPPY_HOME=`cd snappy-1.0.5; pwd`
export LEVELDB_HOME=`cd leveldb; pwd`
export LEVELDBJNI_HOME=`cd leveldbjni; pwd`

编译snappy

cd ${SNAPPY_HOME}
./configure --disable-shared --with-pic
make

编译leveldb

cd ${LEVELDB_HOME}
export LIBRARY_PATH=${SNAPPY_HOME}
export C_INCLUDE_PATH=${LIBRARY_PATH}
export CPLUS_INCLUDE_PATH=${LIBRARY_PATH}
git apply ../leveldbjni/leveldb.patch
make libleveldb.a

mvn leveldbjni

cd ${LEVELDBJNI_HOME}
mvn clean install -P download -P armv7


打包完成后,把leveldbjni-arvm7-99-master-SNAPSHOT  解压获取liblevedbjni.so 库,放到/usr/lib 下即可。

4 硬盘资源占用

delete删除数据、添加数据(即使添加相同数据)会增加占用硬盘资源。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值