配置文件
package cn.deltalpha.framework.admin.redis; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * * @Author: bai * @DATE: 2019/12/23 14:52 **/ @Configuration public class RedisConfig { @Bean(name = "jedisPool") @Primary public JedisPool getJedisPool() { return new JedisPool(jedisPoolConfig(), host, port, 0, password); } public JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setTimeBetweenEvictionRunsMillis(5000); jedisPoolConfig.setMinEvictableIdleTimeMillis(10000); jedisPoolConfig.setSoftMinEvictableIdleTimeMillis(10000); jedisPoolConfig.setTestWhileIdle(true); jedisPoolConfig.setJmxEnabled(true); jedisPoolConfig.setJmxNamePrefix(""); jedisPoolConfig.setBlockWhenExhausted(false); return jedisPoolConfig; } @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.password}") private String password; }
工具类
package cn.deltalpha.ybdj.admin.functiontask.delayingqueue.utils; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import javax.annotation.Resource; import java.util.List; import java.util.Set; /** * * @Author: bai * @DATE: 2019/12/23 14:52 **/ @Component public class JedisUtils { @Resource private JedisPool jedisPool; /******************************以下是对key的操作*********************************/ /** * 获取值 * @param key * @param defaultVal * @return */ public String get(String key, String defaultVal) { Jedis jedis = null; try { jedis = jedisPool.getResource(); String val = jedis.get(key); return val == null ? defaultVal : val; } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return defaultVal; } /** * 设置kv ,并制定过期时间 * @param key * @param val * @param seconds 有效期(秒) * @return */ public boolean setex(String key, String val, int seconds) { Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.setex(key, seconds, val); return true; } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return false; } /** * 删除key * @param key * @return */ public boolean del(String key) { Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.del(key); return true; } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return false; } /******************************以下是zset操作*********************************/ /** * 向zset添加元素 * @param key * @param val * @param score * @return */ public boolean zadd(String key, long score, String val) { Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.zadd(key, score, val); //相同的key,也只会做更新操作 return true; } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return false; } /** * 删除zset元素 * @param key * @param val * @return */ public boolean zdel(String key, String... val) { Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.zrem(key, val) > 0; } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return false; } /** * 获取优先队列元素 * @param key * @param startRange * @param endRange * @param orderByDesc 是否降序 * @return */ public Set<String> getSoredSetByRange(String key, int startRange, int endRange, boolean orderByDesc) { Jedis jedis = null; try { jedis = jedisPool.getResource(); if (orderByDesc) { return jedis.zrevrange(key, startRange, endRange); //降序 } else { return jedis.zrange(key, startRange, endRange); //升序 按照score进行排序 } } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return null; } /** * 获取评分 * @param key * @param member * @return */ public Double getScore(String key, String member) { Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.zscore(key, member); } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return null; } /******************************以下是List操作*********************************/ /** * 获取list长度 * @param key * @return */ public long countList(String key) { if (key == null) { return 0; } Jedis jedis = null; try { jedis = jedisPool.getResource(); //获取列表长度 return jedis.llen(key); } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return 0L; } /** * 添加元素到list(使用右进) * @param key * @param val * @return */ public boolean insertList(String key, String... val) { if (key == null || val == null) { return false; } Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.rpush(key, val); return true; } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return false; } /** * 获取list元素(采用左出方式) 先进先出队列 * @param key * @param start * @param end * @return */ public List<String> rangeList(String key, long start, long end) { if (key == null || key.equals("")) { return null; } Jedis jedis = null; try { jedis = jedisPool.getResource(); //返回列表中所有值 return jedis.lrange(key, start, end); } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return null; } /** * 删除list数据 * @param key * @param count * @param value * @return */ public boolean removeListValue(String key, long count, String value) { Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.lrem(key, count, value); return true; } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } return false; } public int removeListValue(String key, long count, List<String> values) { int result = 0; if (values != null && values.size() > 0) { for (String value : values) { if (removeListValue(key, count, value)) { result++; } } } return result; } public int removeListValue(String key, List<String> values) { return removeListValue(key, 1, values); //默认只删除一个元素 重头开始搜索 } }