欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java使用内存数据库ssdb的步骤

程序员文章站 2022-09-29 21:32:51
看这篇文章的同学,redis相信你一定很熟悉了,ssdb是一个功能类似于redis,性能稍弱于redis的高性能数据库,主要是可以使用磁盘代替内存,使得小内存可以胜任请求不高的大部分场景,从而节约资源...

看这篇文章的同学,redis相信你一定很熟悉了,ssdb是一个功能类似于redis,性能稍弱于redis的高性能数据库,主要是可以使用磁盘代替内存,使得小内存可以胜任请求不高的大部分场景,从而节约资源。ssdb官方是这样评价的 : 一个高性能的支持丰富数据结构的 nosql 数据库, 用于替代 redis.

java使用内存数据库ssdb的步骤

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性能对比

java使用内存数据库ssdb的步骤

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的资料请关注其它相关文章!