java使用内存数据库ssdb的步骤
程序员文章站
2022-09-29 21:32:51
看这篇文章的同学,redis相信你一定很熟悉了,ssdb是一个功能类似于redis,性能稍弱于redis的高性能数据库,主要是可以使用磁盘代替内存,使得小内存可以胜任请求不高的大部分场景,从而节约资源...
看这篇文章的同学,redis相信你一定很熟悉了,ssdb是一个功能类似于redis,性能稍弱于redis的高性能数据库,主要是可以使用磁盘代替内存,使得小内存可以胜任请求不高的大部分场景,从而节约资源。ssdb官方是这样评价的 : 一个高性能的支持丰富数据结构的 nosql 数据库, 用于替代 redis.
1. 特性
- 替代 redis 数据库, redis 的 100 倍容量
- leveldb 网络支持, 使用 c/c++ 开发
- redis api 兼容, 支持 redis 客户端
- 适合存储集合数据, 如 list, hash, zset...
- 客户端 api 支持的语言包括: c++, php, python, java, go
- 持久化的队列服务
- 主从复制, 负载均衡
支持多种api,比如php使用:
<?php require_once('ssdb.php'); $ssdb = new simplessdb('127.0.0.1', 8888); $resp = $ssdb->set('key', '123'); $resp = $ssdb->get('key'); echo $resp; // output: 123
2. 安装
wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip unzip master cd ssdb-master make # optional, install ssdb in /usr/local/ssdb sudo make install
3. 启动
# start master ./ssdb-server ssdb.conf # or start as daemon ./ssdb-server -d ssdb.conf
4. 与redis性能对比
5. java 读写ssdb
java操作ssdb需要的maven依赖:
<dependency> <groupid>com.lovver</groupid> <artifactid>ssdbj</artifactid> <version>0.0.1</version> </dependency>
java读取ssdb,有两种方式,分别是单连接和连接池的方式,亲测以下方式都可以用:
ssdbconnection单连接方式
@test public void test(){ ssdbdriver dd= new ssdbdriver(); properties info = new properties(); info.setproperty("ssdb_host", "192.168.1.1"); info.setproperty("ssdb_port", "8888"); // 密码 info.setproperty("password", "ssdb.test"); info.setproperty("logintimeout", "300"); info.setproperty("tcpkeepalive", "true"); info.setproperty("protocolname", "ssdb"); info.setproperty("protocolversion", "1.0"); ssdbconnection conn = null; try{ conn = dd.connect(info); system.out.println(conn); // 写入数据到ssdb arraylist<byte[]> setparams=new arraylist<byte[]>(){ { add("joliny".getbytes()); add("是的发生地发生1231sdfsfg23".getbytes()); } }; conn.execute("set",setparams); // 从ssdb读取数据 list params=new arraylist(); params.add("joliny".getbytes()); baseresultset<byte[]> rs=conn.execute("get",params); system.out.println(new string(rs.getresult())); } catch (ssdbexception e) { e.printstacktrace(); }finally { if(conn != null){ conn.close(); } } }
ssdbpoolconnection连接池方式
多线程通常需要用连接池的方式,提高效率。
import com.lovver.ssdbj.core.baseresultset; import com.lovver.ssdbj.core.ssdbdriver; import com.lovver.ssdbj.core.impl.ssdbconnection; import com.lovver.ssdbj.exception.ssdbexception; import com.lovver.ssdbj.pool.ssdbdatasource; import com.lovver.ssdbj.pool.ssdbpoolconnection; import org.junit.test; import java.util.arraylist; import java.util.list; import java.util.properties; /** * @author: keguang * @date: 2020/2/17 16:23 * @version: v1.0.0 * @description: */ public class ssdbtest { private static ssdbdatasource ds=null; static{ properties info = new properties(); info.setproperty("password", "ssdb.test"); info.setproperty("logintimeout", "300"); info.setproperty("tcpkeepalive", "true"); info.setproperty("protocolname", "ssdb"); info.setproperty("protocolversion", "1.0"); ds = new ssdbdatasource("192.168.1.1",8888,null,info); } @test public void test2(){ ssdbpoolconnection conn=null; try { conn = ds.getconnection(); system.out.println(conn); arraylist<byte[]> setparams=new arraylist<byte[]>(){ { add("language".getbytes()); add("zh-cn".getbytes()); } }; conn.execute("set",setparams); arraylist params=new arraylist(); params.add("language".getbytes()); baseresultset<byte[]> rs= conn.execute("get",params); if(rs.getresult() == null){ system.out.println("null"); } system.out.println(new string(rs.getresult())); } catch (exception e) { e.printstacktrace(); }finally { if (conn != null){ conn.close(); } } } }
以上就是java使用内存数据库ssdb的步骤的详细内容,更多关于java使用内存数据库ssdb的资料请关注其它相关文章!