java操作BerkeleyDB数据库判断元素是否存在(过滤器)

来源:互联网 发布:淘宝网店上货教程 编辑:程序博客网 时间:2024/05/16 13:59

一、前期准备

需要的jar包:je-5.0.84.jar



二、代码部分

package com.lei.httpclient;import java.io.File;import java.util.SortedMap;import com.sleepycat.bind.serial.ClassCatalog;import com.sleepycat.bind.serial.SerialBinding;import com.sleepycat.bind.serial.StoredClassCatalog;import com.sleepycat.bind.tuple.TupleBinding;import com.sleepycat.collections.StoredSortedMap;import com.sleepycat.je.Database;import com.sleepycat.je.DatabaseConfig;import com.sleepycat.je.Environment;import com.sleepycat.je.EnvironmentConfig;/** * 通过Berkeley数据库快速判断链接是否已经被抓取过了 * Author: pibigstar * Created on: 2017年10月26日 下午10:57:00 */public class BerkeleyDBTest {public static void main(String[] args) {//新建环境变量EnvironmentConfig envConfig = new EnvironmentConfig();envConfig.setTransactional(false);//不需要事务envConfig.setAllowCreate(true);//允许创建新的数据库文件Environment environment = new Environment(new File("./db/"), envConfig);environment.sync();//同步内存中的数据到硬盘//使用一个通用的数据库配置DatabaseConfig dbConfig = new DatabaseConfig();dbConfig.setTransactional(false);dbConfig.setAllowCreate(true);Database catalogDB = environment.openDatabase(null, "catalog", dbConfig);ClassCatalog catalog = new StoredClassCatalog(catalogDB);//关键字数据类型是字符串TupleBinding<String> keyBinding = TupleBinding.getPrimitiveBinding(String.class);//值数据类型也是字符串SerialBinding<String> dataBinding = new SerialBinding<>(catalog, String.class);Database db = environment.openDatabase(null, "url", dbConfig);//创建一个映射SortedMap<String, String> map = new StoredSortedMap<>(db, keyBinding, dataBinding, true);String url = "http://www.pibigstar.top";map.put(url, "");if (map.containsKey(url)) {System.out.println(url+"已抓取");}String url2 = "http://www.pibigstar.top/index.html";if (map.containsKey(url2)) {System.out.println(url2+"已抓取");}else {System.out.println(url2+"未抓取");}}}


原创粉丝点击