Java客户端Jedis
使用Jedis的Java客户端
maven依赖
<!-- jedis --> <dependency> <groupid>redis.clients</groupid> jedis</artifactid> <version>2.9.0</version> </dependency> <!-- fastjson --> <dependency> <groupid>com.alibaba</groupid> fastjson</artifactid> <version>1.2.22</version> </dependency>
使用Jedis连接池
JedisUtil.java
package com.wishfulcloud.commons.dataSource.redis.jedis; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; /** * Jedis 工具类 * * * @author wangxuezheng * @date 2017年3月21日 下午3:28:18 * @version V1.0 * */ public class JedisUtil { private static volatile GenericObjectPoolConfig poolConfig = null; static{ poolConfig = new GenericObjectPoolConfig(); // 最大连接数为默认值的5倍 poolConfig.setMaxTotal(GenericObjectPoolConfig.DEFAULT_MAX_TOTAL * 5); // 最大空闲连接数为默认值的3倍 poolConfig.setMaxIdle(GenericObjectPoolConfig.DEFAULT_MAX_IDLE * 3); // 最小空闲连接数为默认值的2倍 poolConfig.setMinIdle(GenericObjectPoolConfig.DEFAULT_MIN_IDLE * 2); // 开启jmx功能 poolConfig.setJmxEnabled(true); // 连接池没有连接后客户端的最大等待时间(单位 毫秒) poolConfig.setMaxWaitMillis(3000); } private static volatile JedisPool jedisPool = null; private JedisUtil(){} /** * 从连接池中获取一个Jedis实例 * * @return */ public static Jedis getJedisInstance() throws Exception{ try { if(null == jedisPool){ synchronized (JedisUtil.class){ if(null == jedisPool){ jedisPool = new JedisPool(poolConfig,"192.168.1.218",6379); } } } } catch (Exception e) { throw e; } return jedisPool.getResource(); } /** * 归还到连接池 * * @param jedis */ public static void close(Jedis jedis) throws Exception{ try { if(null != jedis){ jedis.close(); } } catch (Exception e) { throw e; } } }
BaseCache.java
package com.wishfulcloud.commons.dataSource.redis.jedis; import com.alibaba.fastjson.JSON; import redis.clients.jedis.Jedis; /** * 单机或着主从复制 ,Jedis Java 客户端 * * @author wangxuezheng * @date 2017年3月21日 下午3:55:26 * @version V1.0 * */ public class BaseCache<t> { /** * 保存或者更新一个实体 * * 如果seconds参数值不为0的话,则是过期缓存,具有缓存时长 * * @param jedis * @param entity 实体对象 * @param id 实体主键 * @param seconds 有效时长多少秒 * * @return true 保存或更新成功 * false 保存或更新失败 */ public Boolean saveOrUpdate(Jedis jedis, T entity, String id, int seconds){ String key = entity.getClass().getSimpleName().toLowerCase() + ":" + id; String ok = jedis.set(key , JSON.toJSONString(entity)); if (seconds != 0){ jedis.expire(key, seconds); } return "OK".equals(ok); } /** * 根据类型和id获取一个实体,未获取到返回 null * * @param jedis * @param clazz 实体.class * @param id 主键id * * @return T 或着 null */ public T getById(Jedis jedis, Class<t> clazz, String id){ String object = jedis.get(clazz.getSimpleName().toLowerCase() + ":" +id); return JSON.parseObject(object, clazz); } /** * 根据id删除一个实体对象 * * @param jedis * @param clazz 实体.class * @param id 主键id * @return true 删除成功 * false 删除失败 * */ public Boolean deleteEntity(Jedis jedis, Class<t> clazz, String id){ String key = clazz.getSimpleName().toLowerCase() + ":" +id; return jedis.del(key) > 0; } }