源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113
1、Maven配置
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency></span>
2、Properties 配置文件
redis.pool.maxActive=100
redis.pool.maxIdle=20
redis.pool.maxWait=3000
redis.ip=localhost
redis.port=6379
3、代码具体实现的Client
/** * * <p> * Redis客户端访问 * </p> * * @author 卓轩 * @创建时间:2014年7月11日 * @version: V1.0 */ public class RedisClient { public static JedisPool jedisPool; // 池化管理jedis链接池 static { //读取相关的配置 ResourceBundle resourceBundle = ResourceBundle.getBundle("redis"); int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive")); int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle")); int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait")); String ip = resourceBundle.getString("redis.ip"); int port = Integer.parseInt(resourceBundle.getString("redis.port")); JedisPoolConfig config = new JedisPoolConfig(); //设置最大连接数 config.setMaxTotal(maxActive); //设置最大空闲数 config.setMaxIdle(maxIdle); //设置超时时间 config.setMaxWaitMillis(maxWait); //初始化连接池 jedisPool = new JedisPool(config, ip, port); } /** * 向缓存中设置字符串内容 * @param key key * @param value value * @return * @throws Exception */ public static boolean set(String key,String value) throws Exception{ Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedisPool.returnResource(jedis); } } /** * 向缓存中设置对象 * @param key * @param value * @return */ public static boolean set(String key,Object value){ Jedis jedis = null; try { String objectJson = JSON.toJSONString(value); jedis = jedisPool.getResource(); jedis.set(key, objectJson); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedisPool.returnResource(jedis); } } /** * 删除缓存中得对象,根据key * @param key * @return */ public static boolean del(String key){ Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.del(key); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedisPool.returnResource(jedis); } } /** * 根据key 获取内容 * @param key * @return */ public static Object get(String key){ Jedis jedis = null; try { jedis = jedisPool.getResource(); Object value = jedis.get(key); return value; } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedisPool.returnResource(jedis); } } /** * 根据key 获取对象 * @param key * @return */ public static <T> T get(String key,Class<T> clazz){ Jedis jedis = null; try { jedis = jedisPool.getResource(); String value = jedis.get(key); return JSON.parseObject(value, clazz); } catch (Exception e) { e.printStackTrace(); return null; }finally{ jedisPool.returnResource(jedis); } } }
4、Sharding 分片管理
/** * * <p> * Sharding Redis Client 工具类 * </p> * * @author 卓轩 * @创建时间:2014年7月11日 * @version: V1.0 */ public class ShardingRedisClient { private static ShardedJedisPool shardedJedisPool; static { // 读取相关的配置 ResourceBundle resourceBundle = ResourceBundle.getBundle("redis"); int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive")); int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle")); int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait")); String ip = resourceBundle.getString("redis.ip"); int port = Integer.parseInt(resourceBundle.getString("redis.port")); //设置配置 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(maxActive); config.setMaxIdle(maxIdle); config.setMaxWaitMillis(maxWait); //设置分片元素信息 JedisShardInfo shardInfo1 = new JedisShardInfo(ip,port); JedisShardInfo shardInfo2 = new JedisShardInfo(ip,port); List<JedisShardInfo> list = new ArrayList<JedisShardInfo>(); list.add(shardInfo1); list.add(shardInfo2); shardedJedisPool = new ShardedJedisPool(config, list); } /** * 向缓存中设置字符串内容 * @param key key * @param value value * @return * @throws Exception */ public static boolean set(String key,String value) throws Exception{ ShardedJedis jedis = null; try { jedis = shardedJedisPool.getResource(); jedis.set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ shardedJedisPool.returnResource(jedis); } } /** * 向缓存中设置对象 * @param key * @param value * @return */ public static boolean set(String key,Object value){ ShardedJedis jedis = null; try { String objectJson = JSON.toJSONString(value); jedis = shardedJedisPool.getResource(); jedis.set(key, objectJson); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ shardedJedisPool.returnResource(jedis); } } /** * 删除缓存中得对象,根据key * @param key * @return */ public static boolean del(String key){ ShardedJedis jedis = null; try { jedis = shardedJedisPool.getResource(); jedis.del(key); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ shardedJedisPool.returnResource(jedis); } } /** * 根据key 获取内容 * @param key * @return */ public static Object get(String key){ ShardedJedis jedis = null; try { jedis = shardedJedisPool.getResource(); Object value = jedis.get(key); return value; } catch (Exception e) { e.printStackTrace(); return false; }finally{ shardedJedisPool.returnResource(jedis); } } /** * 根据key 获取对象 * @param key * @return */ public static <T> T get(String key,Class<T> clazz){ ShardedJedis jedis = null; try { jedis = shardedJedisPool.getResource(); String value = jedis.get(key); return JSON.parseObject(value, clazz); } catch (Exception e) { e.printStackTrace(); return null; }finally{ shardedJedisPool.returnResource(jedis); } } }
5、 单元测试、保存对象、写入对象
/** * * <p> * 测试独立redis 客户端 * </p> * * @author 卓轩 * @创建时间:2014年7月11日 * @version: V1.0 */ public class SimpleClient { @Test public void userCache(){ //向缓存中保存对象 UserDO zhuoxuan = new UserDO(); zhuoxuan.setUserId(113445); zhuoxuan.setSex(1); zhuoxuan.setUname("卓轩"); zhuoxuan.setUnick("zhuoxuan"); zhuoxuan.setEmail("zhuoxuan@mogujie.com"); //调用方法处理 boolean reusltCache = RedisClient.set("zhuoxuan", zhuoxuan); if (reusltCache) { System.out.println("向缓存中保存对象成功。"); }else{ System.out.println("向缓存中保存对象失败。"); } } @Test public void getUserInfo(){ UserDO zhuoxuan = RedisClient.get("zhuoxuan",UserDO.class); if(zhuoxuan != null){ System.out.println("从缓存中获取的对象," + zhuoxuan.getUname() + "@" + zhuoxuan.getEmail()); } } }