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

 更新时间:2020年12月03日 14:44:19   作者:柯广  
这篇文章主要介绍了java使用内存数据库ssdb的步骤,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下

看这篇文章的同学,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的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Spring Web Jackson对RequestBody反序列化失败的解决

    基于Spring Web Jackson对RequestBody反序列化失败的解决

    这篇文章主要介绍了基于Spring Web Jackson对RequestBody反序列化失败的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • springboot为异步任务规划自定义线程池的实现

    springboot为异步任务规划自定义线程池的实现

    本文主要介绍了springboot为异步任务规划自定义线程池,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Spring Boot2开发之Spring Boot整合Shiro两种详细方法

    Spring Boot2开发之Spring Boot整合Shiro两种详细方法

    这篇文章主要介绍了Spring Boot2开发之Spring Boot整合Shiro详细方法,需要的朋友可以参考下
    2020-03-03
  • 基于Java的电梯系统实现过程

    基于Java的电梯系统实现过程

    这篇文章主要介绍了基于Java的电梯系统实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java连接SQL Server数据库的方法

    java连接SQL Server数据库的方法

    这篇文章主要为大家详细介绍了java连接SQL Server数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • JAVA求两直线交点和三角形内外心的方法

    JAVA求两直线交点和三角形内外心的方法

    本文提供了JAVA求两直线交点、三角形外心、三角形内心的代码和算法讲解,大家可以参考使用
    2013-11-11
  • Springboot中的默认日志框架配置详解

    Springboot中的默认日志框架配置详解

    这篇文章主要介绍了Springboot中的默认日志框架配置详解,spring boot日志默认会输出到控制台,所以并不需要我们做过多配置,但不过不喜欢控制台默认日志格式,则可以使用logging.pattern.console属性配置,需要的朋友可以参考下
    2023-09-09
  • 浅析Java 反射机制的用途和缺点

    浅析Java 反射机制的用途和缺点

    这篇文章给大家分析了Java 反射机制的用途和缺点以及相关知识点内容,有兴趣的朋友可以参考学习下。
    2018-07-07
  • java List集合去除null的4种方法

    java List集合去除null的4种方法

    这篇文章主要给大家介绍了java List集合去除null的3种方法,文中通过代码示例将每种方法都介绍的非常详细,对大家学习或者使用Java具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • SpringMVC中的HandlerMapping详解

    SpringMVC中的HandlerMapping详解

    这篇文章主要介绍了SpringMVC中的HandlerMapping详解,HandlerMapping是请求映射处理器,也就是通过请求的url找到对应的逻辑处理单元(Controller),注意这里只是建立请求与Controller的映射关系,最终的处理是通过HandlerAdapt来进行处理的,需要的朋友可以参考下
    2023-09-09

最新评论