spring整合redis
1,在pom中加入依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.4.2</version> </dependency>2,在spring配置文件中配置pool
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxTotal}"/> <property name="maxIdle" value="${redis.pool.maxIdle}"/> <property name="minIdle" value="${redis.pool.minIdle}"/> <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}"/> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="true"/> </bean> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" scope="singleton"> <constructor-arg index="0" ref="jedisPoolConfig" /> <constructor-arg index="1"> <list> <bean name="slaver" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis.slaver.host}"/> <constructor-arg index="1" value="${redis.slaver.port}" type="int"/> </bean> <bean name="master" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis.master.host}"/> <constructor-arg index="1" value="${redis.master.port}" type="int"/> </bean> </list> </constructor-arg> </bean> <!-- redis的连接池pool,不是必选项:timeout/password --> <bean id = "jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg index="0" ref="jedisPoolConfig"/> <constructor-arg index="1" value="${redis.host}"/> </bean>3,编写redis工具类
public class ShardedJedisUtil { private final static Logger logger = LoggerFactory.getLogger(ShardedJedisUtil.class); @Autowired private ShardedJedisPool shardedJedisPool; /** * 设置一个key的过期时间(单位:秒) * @param key key值 * @param seconds 多少秒后过期 * @return 1:设置了过期时间 0:没有设置过期时间/不能设置过期时间 */ public long expire(String key, int seconds) { if (key==null || key.equals("")) { return 0; } ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); return shardedJedis.expire(key, seconds); } catch (Exception ex) { logger.error("EXPIRE error[key=" + key + " seconds=" + seconds + "]" + ex.getMessage(), ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return 0; } /** * 设置一个key在某个时间点过期 * @param key key值 * @param unixTimestamp unix时间戳,从1970-01-01 00:00:00开始到现在的秒数 * @return 1:设置了过期时间 0:没有设置过期时间/不能设置过期时间 */ public long expireAt(String key, int unixTimestamp) { if (key==null || key.equals("")) { return 0; } ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); return shardedJedis.expireAt(key, unixTimestamp); } catch (Exception ex) { logger.error("EXPIRE error[key=" + key + " unixTimestamp=" + unixTimestamp + "]" + ex.getMessage(), ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return 0; } /** * 截断一个List * @param key 列表key * @param start 开始位置 从0开始 * @param end 结束位置 * @return 状态码 */ public String trimList(String key, long start, long end) { if (key == null || key.equals("")) { return "-"; } ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); return shardedJedis.ltrim(key, start, end); } catch (Exception ex) { logger.error("LTRIM 出错[key=" + key + " start=" + start + " end=" + end + "]" + ex.getMessage() , ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return "-"; } /** * 检查Set长度 * @param key * @return */ public long countSet(String key){ if(key == null ){ return 0; } ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); return shardedJedis.scard(key); } catch (Exception ex) { logger.error("countSet error.", ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return 0; } /** * 添加到Set中(同时设置过期时间) * @param key key值 * @param seconds 过期时间 单位s * @param value * @return */ public boolean addSet(String key,int seconds, String... value) { boolean result = addSet(key, value); if(result){ long i = expire(key, seconds); return i==1; } return false; } /** * 添加到Set中 * @param key * @param value * @return */ public boolean addSet(String key, String... value) { if(key == null || value == null){ return false; } ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); shardedJedis.sadd(key, value); return true; } catch (Exception ex) { logger.error("setList error.", ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return false; } /** * @param key * @param value * @return 判断值是否包含在set中 */ public boolean containsInSet(String key, String value) { if(key == null || value == null){ return false; } ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); return shardedJedis.sismember(key, value); } catch (Exception ex) { logger.error("setList error.", ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return false; } /** * 获取Set * @param key * @return */ public Set<String> getSet(String key){ ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); return shardedJedis.smembers(key); } catch (Exception ex) { logger.error("getList error.", ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return null; } /** * 从set中删除value * @param key * @return */ public boolean removeSetValue(String key,String... value){ ShardedJedis shardedJedis = null; try { shardedJedis = shardedJedisPool.getResource(); shardedJedis.srem(key, value); return true; } catch (Exception ex) { logger.error("getList error.", ex); returnBrokenResource(shardedJedis); } finally { returnResource(shardedJedis); } return false; }