经过我们团队的一番讨论,最终决定使用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简单封装相关推荐

  1. redis java 集成视频_redis(6)-java集成二

    使用Jedis框架: 创建maven工程,引入依赖 redis.clients jedis 2.9.0 Demo代码如下: import java.util.HashMap; import java. ...

  2. java获取redis中各种数据类型key对应的value代码简单封装

    来源:http://blog.csdn.net/russ44/article/details/52121180 目前在做自动化测试时,设计到需要获取存储在redis中的值,总结了操作代码如下: 需要j ...

  3. java redis 重连机制_redis在java中的客户端连接

    单例模式下创建连接池,包括断线重连等机制. public class RedisClient { private static JedisPool pool = null; private Redis ...

  4. js使用基础总结(简单封装,事件,foreach 原生js写法)

    1.forEach的灵活使用 [注意]数组专用的-----遍历函数方法相当于for循环 语法结构 arr.forEach(function(obj,index){ obj---数组中的具体数据,可以是 ...

  5. java redis管道_Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍

    jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式 ...

  6. 【Java 网络编程】TCP 服务器端 客户端 简单示例

    文章目录 I IntelliJ IDEA 创建 Java 项目 II 客户端 Socket 创建 III Socket 客户端连接服务器端 IV Socket 两个端点信息获取 V 控制台人机交互 V ...

  7. java的oauth2.0_[转]Java的oauth2.0 服务端与客户端的实现

    oauth原理简述 oauth本身不是技术,而是一项资源授权协议,重点是协议!Apache基金会提供了针对Java的oauth封装.我们做Java web项目想要实现oauth协议进行资源授权访问,直 ...

  8. 【Java】JavaMail编程实现邮件客户端-OutBox InBox

    在上一篇<JavaMail编程实现邮件客户端-总览>中我们已经说完了邮箱客户端的登录界面.主界面,在主界面上点击OutBox按钮就能够进入发件箱,点击InBox按钮就能进入收件箱.这篇文章 ...

  9. 【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )

    文章目录 I UDP 信息发送接收原理 II UDP 发送和接收端口相同 III UDP 发送信息代码示例 IV UDP 接收信息代码示例 V UDP 服务器端代码示例 VI UDP 客户端代码示例 ...

  10. 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)

    目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...

最新文章

  1. python3 判断字符串是否包含指定字符
  2. gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
  3. c语言五子棋排行榜代码,C语言案例:控制台版本的五子棋游戏【代码】
  4. 如何构建基于.NET Core和云环境下的微服务技术体系?
  5. php gzip乱码,php file_get_contents抓取Gzip网页乱码的三种解决方法
  6. 关于CSS预处理器(less,sass)
  7. 微型计算机 总结,微机室活动总结
  8. 裁员风暴席卷科技圈 新旧科技公司面临不可避免的变革阵痛
  9. .net web开发经典图书总结
  10. (通用版)salesforce中soql及sosl的伪‘Like’模糊检索
  11. hdu5033 Building 单调队列
  12. xcode 4.0 以上版本安装新浪微博SDK
  13. KeyPass密码管理软件使用说明
  14. DolphinScheduler 调度系统
  15. HQChart使用教程70 -通达信语法检测/指标翻译
  16. 【VBA】汉字转换全拼函数
  17. android登录功能实现代码,功能强大的登录界面Android实现代码
  18. Eclipse中如何clean项目以及clean的作用
  19. CentOS 6.3安装 flash控件成功案例(其它方法未成功)
  20. 分布式ID之生成策略

热门文章

  1. 开源,阿里千万实例可观测采集器 iLogtail
  2. 6月16日!蒋江伟深度解读基础云产品生态战略 | 凌云时刻
  3. Kafka从上手到实践 - Kafka CLI:Reseting Offset Config CLI | 凌云时刻
  4. 第九届中国开源黑客松活动将于2019年4月18日-4月20日,在深圳举办
  5. 【语音处理】基于matlab GUI数字音频分析与处理系统【含Matlab源码 1739期】
  6. 【语音加密】基于matlab混沌+AES语音加密解密【含Matlab源码 1593期】
  7. 毕设题目:Matlab无人机协同任务
  8. 【运动学】基于matlab斜抛物体斜坡射程【含Matlab源码 980期】
  9. 【人脸识别】基于matlab人脸识别检测脸、眼、鼻子和嘴【含Matlab源码 178期】
  10. 【路径规划】基于matalb遗传算法机器人栅格地图避障路径规划【含Matlab源码 027期】