Redis缓存系统(一)Java-Jedis操作Redis,基本操作以及 实现对象保存


源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113


1、Maven配置


	redis.clients
	jedis
	2.5.0


	com.alibaba
	fastjson
	1.1.41


2、Properties 配置文件

  redis.pool.maxActive=100

  redis.pool.maxIdle=20

  redis.pool.maxWait=3000


  redis.ip=localhost

  redis.port=6379


3、代码具体实现的Client

/**
 * 
 * 

* Redis客户端访问 *

* * @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 get(String key,Class 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 分片管理

/**
 * 
 * 

* Sharding Redis Client 工具类 *

* * @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 list = new ArrayList(); 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 get(String key,Class 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、 单元测试、保存对象、写入对象


/**
 * 
 * 

* 测试独立redis 客户端 *

* * @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("[email protected]"); //调用方法处理 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()); } } }




你可能感兴趣的:(互联网技术方案-缓存)