redis java客户端封装_redis的java客户端Jedis简单封装
经过我们团队的一番讨论,最终决定使用redis来进行我们的业务缓存。redis会将数据缓存到内存中,运行效率会很快。同时异步将数据写入到磁盘中,进行持久化。
且redis支持主从同步,支持分布式部署,支持N多数据结构,这对于我们有着莫大的吸引力。
我们团队讨论的焦点是在于redis的灾备恢复问题。由于redis的持久化是异步的,总会有一点时间内存中数据和磁盘数据不同步的情况(当然可以设置成完全同步,那么用redis的意义就大打折扣了)。虽然没有找到尽善尽美的解决办法,不过有一些网上的处理方式还是可以接受的。
参见:http://blog.csdn.net/xiangliangyu/article/details/8165644 随后我使用java客户端Jedis对redis相关操作进行了一些系统的简单的封装。使用的是jedis的分布式连接池,这样方便于redis横向扩展,增加高可用性。封装思路:首先定义连接池类,封装连接池获取方式;对外为接口,接口定义的是redis常规操作,定义的方法基本与redis中一致,并且使用接口便于扩展;实现接口,我封装的实现类只使用了分布式的方式(即ShardedJedis),也可以使用别的实现方式,可以自己扩展。
1.获取连接池:
简单配置JedisPoolConfig
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(maxTotal);//the max number of connection
jedisPoolConfig.setMaxIdle(maxIdle);//the max number of free
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);//the longest time of waiting
设置JedisShardInfo(redis.clients.jedis.JedisShardInfo.JedisShardInfo(String
host, int port))
这样就得到了连接池。
2.定义接口,简单为上:
public interface JedisClientInterface {
/**
* 写入一般的string类型的value
*
* @param key
* @param value
*/
void put(String key, String value);
/**
* 读取String类型的value
*
* @param key
* @return
*/
String get(String key);
}
3.完成实现类:
public class JedisClientShardImpl implements JedisClientInterface {
@Override
public void put(String key, String value) {
boolean flag = true;
ShardedJedis shardedJedis = pool.getResource();
try{
if(shardedJedis!=null){
shardedJedis.set(key, value);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
pool.returnResource(shardedJedis);
}else{
pool.returnBrokenResource(shardedJedis);
}
}
}
@Override
public String get(String key) {
boolean flag = true;
ShardedJedis shardedJedis = pool.getResource();
try{
if(shardedJedis!=null){
return shardedJedis.get(key);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
pool.returnResource(shardedJedis);
}else{
pool.returnBrokenResource(shardedJedis);
}
}return null;}}
至此,整个封装流程就走通了。可以任意向下扩展了。
原文:http://blog.csdn.net/yichenlian/article/details/37501853
redis java客户端封装_redis的java客户端Jedis简单封装相关推荐
- redis java 集成视频_redis(6)-java集成二
使用Jedis框架: 创建maven工程,引入依赖 redis.clients jedis 2.9.0 Demo代码如下: import java.util.HashMap; import java. ...
- java获取redis中各种数据类型key对应的value代码简单封装
来源:http://blog.csdn.net/russ44/article/details/52121180 目前在做自动化测试时,设计到需要获取存储在redis中的值,总结了操作代码如下: 需要j ...
- java redis 重连机制_redis在java中的客户端连接
单例模式下创建连接池,包括断线重连等机制. public class RedisClient { private static JedisPool pool = null; private Redis ...
- js使用基础总结(简单封装,事件,foreach 原生js写法)
1.forEach的灵活使用 [注意]数组专用的-----遍历函数方法相当于for循环 语法结构 arr.forEach(function(obj,index){ obj---数组中的具体数据,可以是 ...
- java redis管道_Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式 ...
- 【Java 网络编程】TCP 服务器端 客户端 简单示例
文章目录 I IntelliJ IDEA 创建 Java 项目 II 客户端 Socket 创建 III Socket 客户端连接服务器端 IV Socket 两个端点信息获取 V 控制台人机交互 V ...
- java的oauth2.0_[转]Java的oauth2.0 服务端与客户端的实现
oauth原理简述 oauth本身不是技术,而是一项资源授权协议,重点是协议!Apache基金会提供了针对Java的oauth封装.我们做Java web项目想要实现oauth协议进行资源授权访问,直 ...
- 【Java】JavaMail编程实现邮件客户端-OutBox InBox
在上一篇<JavaMail编程实现邮件客户端-总览>中我们已经说完了邮箱客户端的登录界面.主界面,在主界面上点击OutBox按钮就能够进入发件箱,点击InBox按钮就能进入收件箱.这篇文章 ...
- 【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
文章目录 I UDP 信息发送接收原理 II UDP 发送和接收端口相同 III UDP 发送信息代码示例 IV UDP 接收信息代码示例 V UDP 服务器端代码示例 VI UDP 客户端代码示例 ...
- 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)
目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...
最新文章
- python3 判断字符串是否包含指定字符
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
- c语言五子棋排行榜代码,C语言案例:控制台版本的五子棋游戏【代码】
- 如何构建基于.NET Core和云环境下的微服务技术体系?
- php gzip乱码,php file_get_contents抓取Gzip网页乱码的三种解决方法
- 关于CSS预处理器(less,sass)
- 微型计算机 总结,微机室活动总结
- 裁员风暴席卷科技圈 新旧科技公司面临不可避免的变革阵痛
- .net web开发经典图书总结
- (通用版)salesforce中soql及sosl的伪‘Like’模糊检索
- hdu5033 Building 单调队列
- xcode 4.0 以上版本安装新浪微博SDK
- KeyPass密码管理软件使用说明
- DolphinScheduler 调度系统
- HQChart使用教程70 -通达信语法检测/指标翻译
- 【VBA】汉字转换全拼函数
- android登录功能实现代码,功能强大的登录界面Android实现代码
- Eclipse中如何clean项目以及clean的作用
- CentOS 6.3安装 flash控件成功案例(其它方法未成功)
- 分布式ID之生成策略
热门文章
- 开源,阿里千万实例可观测采集器 iLogtail
- 6月16日!蒋江伟深度解读基础云产品生态战略 | 凌云时刻
- Kafka从上手到实践 - Kafka CLI:Reseting Offset Config CLI | 凌云时刻
- 第九届中国开源黑客松活动将于2019年4月18日-4月20日,在深圳举办
- 【语音处理】基于matlab GUI数字音频分析与处理系统【含Matlab源码 1739期】
- 【语音加密】基于matlab混沌+AES语音加密解密【含Matlab源码 1593期】
- 毕设题目:Matlab无人机协同任务
- 【运动学】基于matlab斜抛物体斜坡射程【含Matlab源码 980期】
- 【人脸识别】基于matlab人脸识别检测脸、眼、鼻子和嘴【含Matlab源码 178期】
- 【路径规划】基于matalb遗传算法机器人栅格地图避障路径规划【含Matlab源码 027期】