java使用內(nèi)存數(shù)據(jù)庫ssdb
看這篇文章的同學(xué),redis
相信你一定很熟悉了,ssdb
是一個(gè)功能類似于redis
,性能稍弱于redis
的高性能數(shù)據(jù)庫,主要是可以使用磁盤代替內(nèi)存,使得小內(nèi)存可以勝任請(qǐng)求不高的大部分場(chǎng)景,從而節(jié)約資源。ssdb
官方是這樣評(píng)價(jià)的 : 一個(gè)高性能的支持豐富數(shù)據(jù)結(jié)構(gòu)的 NoSQL 數(shù)據(jù)庫, 用于替代 Redis.
1. 特性
- 替代 Redis 數(shù)據(jù)庫, Redis 的 100 倍容量
- LevelDB 網(wǎng)絡(luò)支持, 使用 C/C++ 開發(fā)
- Redis API 兼容, 支持 Redis 客戶端
- 適合存儲(chǔ)集合數(shù)據(jù), 如 list, hash, zset...
- 客戶端 API 支持的語言包括: C++, PHP, Python, Java, Go
- 持久化的隊(duì)列服務(wù)
- 主從復(fù)制, 負(fù)載均衡
支持多種api
,比如php
使用:
2. 安裝
3. 啟動(dòng)
4. 與redis
性能對(duì)比
5. java 讀寫ssdb
java
操作ssdb
需要的maven
依賴:
java
讀取ssdb
,有兩種方式,分別是單連接和連接池的方式,親測(cè)以下方式都可以用:
1 SSDBConnection
單連接方式
2 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();
}
}
}
}
作者:柯廣的網(wǎng)絡(luò)日志
微信公眾號(hào):Java大數(shù)據(jù)與數(shù)據(jù)倉庫