redis的java客户端Jedis简单封装
来源:互联网 发布:网络诈骗形式 编辑:程序博客网 时间:2024/05/17 13:40
经过我们团队的一番讨论,最终决定使用redis来进行我们的业务缓存。redis会将数据缓存到内存中,运行效率会很快。同时异步将数据写入到磁盘中,进行持久化。
且redis支持主从同步,支持分布式部署,支持N多数据结构,这对于我们有着莫大的吸引力。
参见:http://blog.csdn.net/yichenlian/article/details/27207383
我们团队讨论的焦点是在于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 connectionjedisPoolConfig.setMaxIdle(maxIdle);//the max number of freejedisPoolConfig.setMaxWaitMillis(maxWaitMillis);//the longest time of waiting
设置JedisShardInfo(redis.clients.jedis.JedisShardInfo.JedisShardInfo(String host, int port))
得到ShardedJedisPool(连接池):redis.clients.jedis.ShardedJedisPool.ShardedJedisPool(GenericObjectPoolConfig poolConfig, List<JedisShardInfo> shards,Hashing algo)
这样就得到了连接池。
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 {@Overridepublic 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); }}}@Overridepublic 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; }}
至此,整个封装流程就走通了。可以任意向下扩展了。
- redis的java客户端Jedis简单封装
- Redis的java客户端Jedis
- redis的java客户端jedis
- Redis的java客户端Jedis
- Redis的Java客户端Jedis
- Redis的Java客户端Jedis
- redis客户端jedis的简单使用
- Redis Java客户端Jedis
- redis -java客户端jedis
- Redis Java客户端Jedis
- Redis-Java客户端Jedis
- Redis的java客户端Jedis的使用
- redis的Java客户端jedis使用示例
- Redis 的 Java 客户端开发包 Jedis
- 使用Redis的Java客户端Jedis
- 使用Redis的Java客户端Jedis
- Jedis(redis的Java客户端开发包)
- 使用Redis的Java客户端Jedis
- Oracle服务器安装 第一次使用 安装命令
- Byte[]转换为字符串System.Text.Encoding.Default.GetString()尾部空‘\0’信息处理
- HDU 1016 Prime Ring Problem
- vm三种连接方式bridge, nat, host-only
- Android Studio科普篇——2.误区
- redis的java客户端Jedis简单封装
- 在Nginx下针对IP和目录限速
- Android和C#实现实时视频传输Demo
- C# 调用 C++ dll 的一些问题
- 屏蔽CListCtrl选择功能
- Apache 防止未授权域名指向服务器
- 在sun solaris上安装oracle 11g
- 可以使用免费wifi啦
- 开始学习swift,资料汇总帖