当前位置: 首页 > news >正文

Redis 替代品SSDB Java客户端

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Redis 替代品SSDB Java客户端 博客分类: 缓存  

SSDB支持 Redis 网络协议, 所以你可以用 Redis 的客户端来连接 SSDB 服务器. 但是, 使用 SSDB 客户端是最高效的方式。所有的 SSDB 客户端 API 都是支持二进制数据的, 二进制数据即是字符串,字符串就是二进制数据。SSDB 源码仓库中, 内置了许多语言的客户端, 这些便是所谓的官方客户端。

关于java客户端,有如下几种:

1.官方客户端

项目地址:https://github.com/ssdb/javassdb

文档说明:http://ssdb.io/docs/java/

实例代码参考:Demo.java

2.ssdb4j

SSDB的Java驱动,实现了连接池,主从。连接池使用commons-pool。

项目地址:https://github.com/ideawu/ssdb

maven  dependency:

[html] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.     <groupId>org.nutz</groupId>  
  3.     <artifactId>ssdb4j</artifactId>  
  4.     <version>9.3</version>  
  5. </dependency>  

实例代码参考:SimpleClientTest.java
3.另一个ssdbj

SSDBJ是一款支持SSDB NoSQL数据库集群的驱动。
功能: 
1、ssdb数据库连接池 
2、支持多个SSDB数据库的master-slave集群 
3、支持集群内部的master和slave的负载均衡,负载均衡暂时支持4中方式(Random round_robin round_robin_weight random_weight) 
4、实现了读写分离 
5、支持集群内slave获取not_found的情况下从master再次直接获取 
6、支持同步未完成时slave读取error的情况下,从master尝试或者重复在slave中尝试。尝试次数可以再配置文件中修改。 
具体参考 src/test/resource/ssdbj.xml
ssdbj提供了3中使用方式:
1、直接手动创建连接,可以参考src/test/java/SSDBJTest.java 
2、使用单库连接池,可以参考 src/test/java/SSDBPoolTest.java 
3、使用集群模式,可以参考src/test/java/SSDBClusterTest.java 
集群模式的配置文件可以参考src/test/resource/ssdbj.xml

项目地址:http://git.oschina.net/jbakwd/ssdbj

下面以jbakwd的ssdbj为例。需要下载源码添加到本地maven仓库中。

 

[html] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.             <groupId>com.lovver</groupId>  
  3.             <artifactId>ssdbj</artifactId>  
  4.             <version>0.0.1</version>  
  5.         </dependency>  

集群配置:ssdbj.xml

 

[html] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <ssdbj>  
  3.     <!-- 定义节点实例,并制定是否为master,以下为双主配置-->  
  4.     <ssdb_node id="ssdb_db1" master="true" host="192.168.36.54"  
  5.         port="8888" user="" password="" loginTimeout="3" tcpKeepAlive="true"  
  6.         protocolName="ssdb" maxTotal="200" maxIdle="10" minIdle="5"  
  7.         testWhileIdle="true" />  
  8.     <ssdb_node id="ssdb_db2" master="true" host="192.168.36.189"  
  9.         port="8888" user="" password="" loginTimeout="3" tcpKeepAlive="true"  
  10.         protocolName="ssdb" maxTotal="200" maxIdle="10" minIdle="5"  
  11.         testWhileIdle="true" />  
  12.     <!-- 集群定义 -->  
  13.     <clusters>  
  14.         <cluster id="ssdb_cluster" notfound_master_retry="true"  
  15.             error_retry_times="3" error_master_retry="true" retry_interval="500"  
  16.             balance="random_weight">  
  17.             <!-- 指定上面节点,支持权重,读写模式 -->  
  18.             <ssdb_node weight="1" rwMode="rw">ssdb_db1</ssdb_node>  
  19.             <ssdb_node weight="2" rwMode="rw">ssdb_db2</ssdb_node>  
  20.         </cluster>  
  21.     </clusters>  
  22. </ssdbj>  

测试代码:SSDBClusterTest.java

 

[java] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. package cn.slimsmart.redis.demo.ssdb;  
  2.   
  3. import com.lovver.ssdbj.SSDBJ;  
  4. import com.lovver.ssdbj.core.BaseResultSet;  
  5. import com.lovver.ssdbj.core.SSDBCmd;  
  6.   
  7. @SuppressWarnings("unchecked")  
  8. public class SSDBClusterTest {  
  9.     public static void main(String[] args) throws Exception {  
  10.         //解析ssdbj.xml,查询ssdb_cluster,找到一个实例执行get key命令  
  11.         //SSDBCmd 支持ssdb命令  
  12.         //executeUpdate 添加更新  
  13.         BaseResultSet<byte[]> rs= SSDBJ.execute("ssdb_cluster",SSDBCmd.GET,"key");  
  14.         System.out.println(rs.getStatus());  
  15.         System.out.println(new String(rs.getResult()));  
  16.           
  17.         if(SSDBJ.executeUpdate("ssdb_cluster",SSDBCmd.SET,"key","value22")){  
  18.             rs= SSDBJ.execute("ssdb_cluster",SSDBCmd.GET,"key");  
  19.             System.out.println(rs.getStatus());  
  20.             System.out.println(new String(rs.getResult()));  
  21.         }else{  
  22.             System.out.println("executeUpdate fail.");  
  23.         }  
  24.     }  

http://blog.csdn.net/zhu_tianwei/article/details/45013497

http://www.oschina.net/question/35855_142213\

http://ssdb.io/docs/zh_cn/redis-to-ssdb.html

http://ssdb.io/zh_cn/

转载于:https://my.oschina.net/xiaominmin/blog/1599657

相关文章:

  • 获取URL地址中的GET参数
  • hadoop yarn 配置
  • android文件关联之mime type
  • 两年前端职业生涯总结
  • 云数据库Memcache版使用教程
  • 8.2. GUI
  • alertmanager源码阅读 - dispatcher
  • java8-模拟hadoop
  • 第 13 章 Barman for PostgreSQL
  • spark 源码编译 standalone 模式部署
  • 在华为设备上实施GRE隧道和IPSEC ***
  • 如何在数据库动态建表
  • 十年阿里java架构师的六大设计原则和项目经验
  • 基于 python + WebDriverAgent 的“跳一跳”小程序高分教程
  • json logstash 解析失败 ctrl-code 1
  • [PHP内核探索]PHP中的哈希表
  • 2018一半小结一波
  • express.js的介绍及使用
  • Flannel解读
  • mongo索引构建
  • Sass Day-01
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 初识 beanstalkd
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​secrets --- 生成管理密码的安全随机数​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (10)STL算法之搜索(二) 二分查找
  • (4)(4.6) Triducer
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (LeetCode C++)盛最多水的容器
  • (ros//EnvironmentVariables)ros环境变量
  • (分布式缓存)Redis持久化
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (五)c52学习之旅-静态数码管
  • (转)ABI是什么
  • (转载)虚函数剖析
  • ***利用Ms05002溢出找“肉鸡
  • ***原理与防范
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net解析传过来的xml_DOM4J解析XML文件
  • /3GB和/USERVA开关
  • @Bean, @Component, @Configuration简析
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [20160902]rm -rf的惨案.txt
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [CTO札记]盛大文学公司名称对联