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

来源:互联网 发布:js保存图片到手机相册 编辑:程序博客网 时间:2024/06/06 23:51


源代码下载: 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 {@Testpublic 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("向缓存中保存对象失败。");}}@Testpublic void getUserInfo(){UserDO zhuoxuan = RedisClient.get("zhuoxuan",UserDO.class);if(zhuoxuan != null){System.out.println("从缓存中获取的对象," + zhuoxuan.getUname() + "@" + zhuoxuan.getEmail());}}}




1 1