redis整合,之前想要bean注入,但是因为框架太老,未成功,查找很多资料最终使用创建公共方法的方式使用redis
不多说,直接上代码。
pom
<!-- redis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.0.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.3</version> </dependency>
redis.properties
#redisu5730u5740 redis.host=127.0.0.1 #redisu7AEFu53E3u53F7 redis.port=6379 #redisu7684u5BC6u7801 redis.auth=123456 #u662Fu5426u4F7Fu7528JedisPoolu9ED8u8BA4u7684u914Du7F6E,u786Eu5B9Atrue,u9ED8u8BA4true defaultSetting=false; #jedisPoolu7684timeoutu65F6u95F4,u9ED8u8BA42000 connectionTimeOut=2000 #u8FDEu63A5u8017u5C3Du65F6u662Fu5426u963Bu585E, falseu62A5u5F02u5E38,tureu963Bu585Eu76F4u5230u8D85u65F6, u9ED8u8BA4true redis.blockWhenExhausted=true #u8BBEu7F6Eu7684u9010u51FAu7B56u7565u7C7Bu540D, u9ED8u8BA4DefaultEvictionPolicy(u5F53u8FDEu63A5u8D85u8FC7u6700u5927u7A7Au95F2u65F6u95F4,u6216u8FDEu63A5u6570u8D85u8FC7u6700u5927u7A7Au95F2u8FDEu63A5u6570) redis.evictionPolicyClassName=org.apache.commons.pool2.impl.DefaultEvictionPolicy #u662Fu5426u542Fu7528poolu7684jmxu7BA1u7406u529Fu80FD, u9ED8u8BA4true redis.jmxEnabled=true #u662Fu5426u542Fu7528u540Eu8FDBu5148u51FA, u9ED8u8BA4true redis.lifo=true #u6700u5927u7A7Au95F2u8FDEu63A5u6570, u9ED8u8BA48u4E2A redis.maxIdle=100 #u6700u5927u8FDEu63A5u6570, u9ED8u8BA48u4E2A redis.maxTotal=300 #u83B7u53D6u8FDEu63A5u65F6u7684u6700u5927u7B49u5F85u6BEBu79D2u6570(u5982u679Cu8BBEu7F6Eu4E3Au963Bu585Eu65F6BlockWhenExhausted),u5982u679Cu8D85u65F6u5C31u629Bu5F02u5E38, u5C0Fu4E8Eu96F6:u963Bu585Eu4E0Du786Eu5B9Au7684u65F6u95F4,u9ED8u8BA4-1 redis.maxWaitMillis=-1 #u9010u51FAu8FDEu63A5u7684u6700u5C0Fu7A7Au95F2u65F6u95F4 u9ED8u8BA41800000u6BEBu79D2(30u5206u949F) redis.minEvictableIdleTimeMillis=1800000 #u6700u5C0Fu7A7Au95F2u8FDEu63A5u6570, u9ED8u8BA40 redis.minIdle=0 #u6BCFu6B21u9010u51FAu68C0u67E5u65F6 u9010u51FAu7684u6700u5927u6570u76EE u5982u679Cu4E3Au8D1Fu6570u5C31u662F : 1/abs(n), u9ED8u8BA43 redis.numTestsPerEvictionRun=3 #u5BF9u8C61u7A7Au95F2u591Au4E45u540Eu9010u51FA, u5F53u7A7Au95F2u65F6u95F4>u8BE5u503C u4E14 u7A7Au95F2u8FDEu63A5>u6700u5927u7A7Au95F2u6570 u65F6u76F4u63A5u9010u51FA,u4E0Du518Du6839u636EMinEvictableIdleTimeMillisu5224u65AD(u9ED8u8BA4u9010u51FAu7B56u7565) redis.softMinEvictableIdleTimeMillis=1800000 #u5728u83B7u53D6u8FDEu63A5u7684u65F6u5019u68C0u67E5u6709u6548u6027, u9ED8u8BA4false redis.testOnBorrow=false #u5728u7A7Au95F2u65F6u68C0u67E5u6709u6548u6027, u9ED8u8BA4false redis.testWhileIdle=false #u9010u51FAu626Bu63CFu7684u65F6u95F4u95F4u9694(u6BEBu79D2) u5982u679Cu4E3Au8D1Fu6570,u5219u4E0Du8FD0u884Cu9010u51FAu7EBFu7A0B, u9ED8u8BA4-1 redus.timeBetweenEvictionRunsMillis=-1
JedisPoolUtil
package com.ly.zx.util.redis; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Properties; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolUtil { private static final String PROPERTIES_PATH = "redis.properties"; private static JedisPool jedisPool; static { if (jedisPool == null) { try { init(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } /** * 初始化Jedis连接池 * * @throws IOException */ private static void init() throws IOException { URL resource = JedisPoolUtil.class.getClassLoader().getResource(PROPERTIES_PATH); if (resource == null) { throw new FileNotFoundException("没有找到指定redis的配置文件:" + PROPERTIES_PATH); } //加载配置文件 InputStream input = new FileInputStream(resource.getFile()); Properties p = new Properties(); p.load(input); //开始配置JedisPool String host = p.getProperty("redis.host") == null ? "localhost" : p.getProperty("redis.host"); int port = p.getProperty("redis.port") == null ? 6379 : Integer.parseInt(p.getProperty("redis.port")); String auth = p.getProperty("redis.auth"); int poolTimeOut = p.getProperty("connectionTimeOut") == null ? 2000 : Integer.parseInt(p.getProperty("connectionTimeOut")); //判断使用默认的配置方式还是采用自定义配置方式, boolean isSetDefault = p.getProperty("defaultSetting") == null ? true : Boolean.parseBoolean(p.getProperty("defaultSetting")); if (isSetDefault) { jedisPool = new JedisPool(new GenericObjectPoolConfig(), host, port, poolTimeOut, auth); } else { JedisPoolConfig config = new JedisPoolConfig(); String blockWhenExhausted = p.getProperty("redis.blockWhenExhausted"); if (blockWhenExhausted != null) { config.setBlockWhenExhausted(Boolean.parseBoolean(blockWhenExhausted)); } String evictionPolicyClassName = p.getProperty("redis.evictionPolicyClassName"); if (evictionPolicyClassName != null) { config.setEvictionPolicyClassName(evictionPolicyClassName); } String jmxEnabled = p.getProperty("redis.jmxEnabled"); if (jmxEnabled != null) { config.setJmxEnabled(Boolean.parseBoolean(jmxEnabled)); } String lifo = p.getProperty("redis.lifo"); if (lifo != null) { config.setLifo(Boolean.parseBoolean(lifo)); } String maxIdle = p.getProperty("redis.maxIdle"); if (maxIdle != null) { config.setMaxIdle(Integer.parseInt(maxIdle)); } String maxTotal = p.getProperty("redis.maxTotal"); if (maxTotal != null) { config.setMaxTotal(Integer.parseInt(maxTotal)); } String maxWaitMillis = p.getProperty("redis.maxWaitMillis"); if (maxWaitMillis != null) { config.setMaxWaitMillis(Long.parseLong(maxWaitMillis)); } String minEvictableIdleTimeMillis = p.getProperty("redis.minEvictableIdleTimeMillis"); if (minEvictableIdleTimeMillis != null) { config.setMinEvictableIdleTimeMillis(Long.parseLong(minEvictableIdleTimeMillis)); } String minIdle = p.getProperty("redis.minIdle"); if (minIdle != null) { config.setMinIdle(Integer.parseInt(minIdle)); } String numTestsPerEvictionRun = p.getProperty("redis.numTestsPerEvictionRun"); if (numTestsPerEvictionRun != null) { config.setNumTestsPerEvictionRun(Integer.parseInt(numTestsPerEvictionRun)); } String softMinEvictableIdleTimeMillis = p.getProperty("redis.softMinEvictableIdleTimeMillis"); if (softMinEvictableIdleTimeMillis != null) { config.setSoftMinEvictableIdleTimeMillis(Long.parseLong(softMinEvictableIdleTimeMillis)); } String testOnBorrow = p.getProperty("redis.testOnBorrow"); if (testOnBorrow != null) { config.setTestOnBorrow(Boolean.parseBoolean(testOnBorrow)); } String testWhileIdle = p.getProperty("redis.testWhileIdle"); if (testWhileIdle != null) { config.setTestWhileIdle(Boolean.parseBoolean(testWhileIdle)); } String timeBetweenEvictionRunsMillis = p.getProperty("redus.timeBetweenEvictionRunsMillis"); if (timeBetweenEvictionRunsMillis != null) { config.setTimeBetweenEvictionRunsMillis(Long.parseLong(timeBetweenEvictionRunsMillis)); } jedisPool = new JedisPool(config, host, port, poolTimeOut, auth); } } public static Jedis getJedis() { return jedisPool.getResource(); } public static void closeJedis(Jedis jedis) { if (jedis != null) { jedis.close(); } } }
RedisUtil
package com.ly.zx.util.redis; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import redis.clients.jedis.Jedis; import redis.clients.jedis.exceptions.JedisDataException; import com.alibaba.fastjson.JSON; public class RedisUtil { private static final int DEFAULT_SETEX_TIMEOUT = 60 * 60;// setex的默认时间 /** * 添加一个字符串值,成功返回1,失败返回0 * * @param key * @param value * @return */ public static int set(String key, String value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); if (jedis.set(key, value).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个字符串值,成功返回1,失败返回0,默认缓存时间为1小时,以本类的常量DEFAULT_SETEX_TIMEOUT为准 * * @param key * @param value * @return */ public static int setEx(String key, String value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); if (jedis.setex(key, DEFAULT_SETEX_TIMEOUT, value).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 判断key是否存在 * * @param key * @param value * @return */ public static boolean keyExists(String key) { if (isValueNull(key)) { return false; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); return jedis.exists(key); }catch(Exception e){ return false; }finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个字符串值,成功返回1,失败返回0,缓存时间以timeout为准,单位秒 * * @param key * @param value * @param timeout * @return */ public static int setEx(String key, String value, int timeout) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); if (jedis.setex(key, timeout, value).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个指定类型的对象,成功返回1,失败返回0 * * @param key * @param value * @return */ public static <T> int set(String key, T value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = SerializeUtils.serialize(value); if (jedis.set(key.getBytes(), data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个指定类型的对象,成功返回1,失败返回0,默认缓存时间为1小时,以本类的常量DEFAULT_SETEX_TIMEOUT为准 * * @param key * @param value * @return */ public static <T> int setEx(String key, T value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = SerializeUtils.serialize(value); if (jedis.setex(key.getBytes(), DEFAULT_SETEX_TIMEOUT, data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个指定类型的对象,成功返回1,失败返回0,缓存时间以timeout为准,单位秒 * * @param key * @param value * @param timeout * @return */ public static <T> int setEx(String key, T value, int timeout) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = SerializeUtils.serialize(value); if (jedis.setex(key.getBytes(), timeout, data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 将一个数值+1,成功返回+后的结果,失败返回null * * @param key * @return * @throws JedisDataException */ public static Long incr(String key) throws JedisDataException { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); return jedis.incr(key); } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 将一个数值-1,成功返回-后的结果,失败返回null * * @param key * @return * @throws JedisDataException */ public static Long decr(String key) throws JedisDataException { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); return jedis.decr(key); } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个字符串值到list中,,成功返回1,失败返回0 * * @param key * @param value * @return */ public static int setList(String key, String... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Long result = jedis.rpush(key, value); if (result != null && result != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个字符串值到list中,全部list的key默认缓存时间为1小时,成功返回1,失败返回0 * * @param key * @param value * @return */ public static int setExList(String key, String... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Long result = jedis.rpush(key, value); jedis.expire(key, DEFAULT_SETEX_TIMEOUT); if (result != null && result != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个字符串值到list中,全部list的key缓存时间为timeOut,单位为秒,成功返回1,失败返回0 * * @param key * @param value * @return */ public static int setExList(String key, int timeOut, String... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Long result = jedis.rpush(key, value); jedis.expire(key, timeOut); if (result != null && result != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个<T>类型对象值到list中,成功返回1,失败返回0 * * @param key * @param value * @return */ public static <T> int setList(String key, T... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); int res = 0; for (T t : value) { byte[] data = SerializeUtils.serialize(t); Long result = jedis.rpush(key.getBytes(), data); if (result != null && result != 0) { res++; } } if (res != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个<T>类型对象值到list中,全部list的key默认缓存时间为1小时,成功返回1,失败返回0 * * @param key * @param value * @return */ public static <T> int setExList(String key, T... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); int res = 0; for (T t : value) { byte[] data = SerializeUtils.serialize(t); Long result = jedis.rpush(key.getBytes(), data); if (result != null && result != 0) { res++; } } jedis.expire(key, DEFAULT_SETEX_TIMEOUT); if (res != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个<T>类型对象值到list中,全部list的key缓存时间为timeOut,单位秒,成功返回1,失败返回0 * * @param key * @param value * @return */ public static <T> int setExList(String key, int timeOut, T... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); int res = 0; for (T t : value) { byte[] data = SerializeUtils.serialize(t); Long result = jedis.rpush(key.getBytes(), data); if (result != null && result != 0) { res++; } } jedis.expire(key, timeOut); if (res != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个List集合成功返回1,失败返回0 * * @param key * @param value * @return * @throws IOException * @throws RuntimeException */ public static <T> int setList(String key, List<T> value) throws RuntimeException, IOException { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = SerializeUtils.serialize(value); if (jedis.set(key.getBytes(), data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个List<T>集合,成功返回1,失败返回0,默认缓存时间为1小时,以本类的常量DEFAULT_SETEX_TIMEOUT为准 * * @param key * @param value * @return * @throws IOException * @throws RuntimeException */ public static <T> int setExList(String key, List<T> value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = SerializeUtils.serialize(value); if (jedis.setex(key.getBytes(), DEFAULT_SETEX_TIMEOUT, data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } }catch(Exception e){ return 0; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个List<T>集合,成功返回1,失败返回0,缓存时间以timeout为准,单位秒 * * @param key * @param value * @param timeout * @return * @throws IOException * @throws RuntimeException */ public static <T> int setExList(String key, List<T> value, int timeout) throws RuntimeException, IOException { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = SerializeUtils.serialize(value); if (jedis.setex(key.getBytes(), timeout, data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个字符串到set,如果key存在就在就最追加,如果key不存在就创建,成功返回1,失败或者没有受影响返回0 * * @param key * @param value * @return */ public static int setSet(String key, String... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Long result = jedis.sadd(key, value); if (result != null && result != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个字符串set,如果key存在就在就最追加,整个set的key默认一小时后过期,如果key存在就在可以种继续添加,如果key不存在就创建,成功返回1,失败或者没有受影响返回0 * * @param key * @param value * @return */ public static int setExSet(String key, String... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Long result = jedis.sadd(key, value); jedis.expire(key, DEFAULT_SETEX_TIMEOUT); if (result != null && result != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个字符串set,如果key存在就在就最追加,整个set的key有效时间为timeOut时间,单位秒,如果key存在就在可以种继续添加,如果key不存在就创建,,成功返回1,失败或者没有受影响返回0 * * @param key * @param value * @return */ public static int setExSet(String key, int timeOut, String... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Long result = jedis.sadd(key, value); jedis.expire(key, timeOut); if (result != null && result != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个<T>类型到set集合,如果key存在就在就最追加,成功返回1,失败或者没有受影响返回0 * * @param key * @param value * @return */ public static <T> int setSet(String key, T... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); int res = 0; for (T t : value) { byte[] data = SerializeUtils.serialize(t); Long result = jedis.sadd(key.getBytes(), data); if (result != null && result != 0) { res++; } } if (res != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个<T>类型到set集合,如果key存在就在就最追加,整个set的key默认有效时间为1小时,成功返回1,失败或者没有受影响返回0 * * @param key * @param value * @return */ public static <T> int setExSet(String key, T... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); int res = 0; for (T t : value) { byte[] data = SerializeUtils.serialize(t); Long result = jedis.sadd(key.getBytes(), data); if (result != null && result != 0) { res++; } } jedis.expire(key, DEFAULT_SETEX_TIMEOUT); if (res != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个<T>类型到set集合,如果key存在就在就最追加,整个set的key有效时间为timeOut,单位秒,成功返回1,失败或者没有受影响返回0 * * @param key * @param value * @return */ public static <T> int setExSet(String key, int timeOut, T... value) { if (isValueNull(key, value)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); int res = 0; for (T t : value) { byte[] data = SerializeUtils.serialize(t); Long result = jedis.sadd(key.getBytes(), data); if (result != null && result != 0) { res++; } } jedis.expire(key, timeOut); if (res != 0) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 添加一个Map<K, V>集合,成功返回1,失败返回0 * * @param key * @param value * @param timeout * @return */ public static <K, V> int setMap(String key, Map<K, V> value) { if (value == null || key == null || "".equals(key)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); String data = JSON.toJSONString(value); if (jedis.set(key, data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个Map<K, V>集合,成功返回1,失败返回0,默认缓存时间为1小时,以本类的常量DEFAULT_SETEX_TIMEOUT为准 * * @param key * @param value * @param timeout * @return */ public static <K, V> int setExMap(String key, Map<K, V> value) { if (value == null || key == null || "".equals(key)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); String data = JSON.toJSONString(value); if (jedis.setex(key, DEFAULT_SETEX_TIMEOUT, data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 缓存一个Map<K, V>集合,成功返回1,失败返回0,缓存时间以timeout为准,单位秒 * * @param key * @param value * @param timeout * @return */ public static <K, V> int setExMap(String key, Map<K, V> value, int timeout) { if (value == null || key == null || "".equals(key)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); String data = JSON.toJSONString(value); if (jedis.setex(key, timeout, data).equalsIgnoreCase("ok")) { return 1; } else { return 0; } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获取一个字符串值 * * @param key * @return */ public static String get(String key) { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); return jedis.get(key); } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得一个指定类型的对象 * * @param key * @param value * @return */ public static <T> T get(String key, Class<T> clazz) { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = jedis.get(key.getBytes()); T result = (T) SerializeUtils.unserialize(data); return result; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得一个字符串集合,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 * 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 * * @param key * @param start * @param end * @return */ public static List<String> getList(String key, long start, long end) { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); List<String> result = jedis.lrange(key, start, end); return result; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得一个<T>类型的对象集合,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 * 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 * * @param key * @param start * @param end * @return */ public static <T> List<T> getList(String key, long start, long end, Class<T> clazz) { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); List<byte[]> lrange = jedis.lrange(key.getBytes(), start, end); List<T> result = null; if (lrange != null) { for (byte[] data : lrange) { if (result == null) { result = new ArrayList<T>(); } result.add((T) SerializeUtils.unserialize(data)); } } return result; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得list中存了多少个值 * * @return */ public static long getListCount(String key) { if (isValueNull(key)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); return jedis.llen(key); } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得一个List<T>的集合, * * @param key * 键 * @param clazz * 返回集合的类型 * @return * @return * @throws IOException */ public static <T> T getList(String key, Class<?> clazz) { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); byte[] data = jedis.get(key.getBytes()); T result = (T) SerializeUtils.unserialize(data); return result; }catch (Exception e){ return null; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得一个字符串set集合 * * @param key * @return */ public static Set<String> getSet(String key) { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Set<String> result = jedis.smembers(key); return result; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得一个字符串set集合 * * @param key * @return */ public static <T> Set<T> getSet(String key, Class<T> clazz) { if (isValueNull(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Set<byte[]> smembers = jedis.smembers(key.getBytes()); Set<T> result = null; if (smembers != null) { for (byte[] data : smembers) { if (result == null) { result = new HashSet<T>(); } result.add((T) SerializeUtils.unserialize(data)); } } return result; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得集合中存在多少个值 * * @param key * @return */ public static long getSetCount(String key) { if (isValueNull(key)) { return 0; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); return jedis.scard(key); } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 获得一个Map<v,k>的集合 * * @param key * @param v * @param k * @return */ public static <K, V> Map<K, V> getMap(String key, Class<K> k, Class<V> v) { if (key == null || "".equals(key)) { return null; } Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); String data = jedis.get(key); @SuppressWarnings("unchecked") Map<K, V> result = (Map<K, V>) JSON.parseObject(data); return result; } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 删除一个值 * * @param key */ public static void del(String... key) { Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); for (int i = 0; i < key.length; i++) { jedis.del(key); } } finally { JedisPoolUtil.closeJedis(jedis); } } /** * 删除所有值 * * @param key */ public static void batchDel() { Jedis jedis = null; try { jedis = JedisPoolUtil.getJedis(); Set<String> keys = jedis.keys("*"); for (String pt : keys) { jedis.del(pt); } } finally { JedisPoolUtil.closeJedis(jedis); } } // --------------------------公用方法区------------------------------------ /** * 检查值是否为null,如果为null返回true,不为null返回false * * @param obj * @return */ private static boolean isValueNull(Object... obj) { for (int i = 0; i < obj.length; i++) { if (obj[i] == null || "".equals(obj[i])) { return true; } } return false; } }
SerializeUtils
package com.ly.zx.util.redis; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializeUtils { /** * 将对象进行序列化 * @param object * @return * @attention 传递对象 */ public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; try { // 序列化 baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); byte[] bytes = baos.toByteArray(); return bytes; } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } } /** * 反序列化 * @param bytes * @return * @attention 反序列化的操作 */ public static Object unserialize(byte[] bytes) { ByteArrayInputStream bais = null; try { // 反序列化 bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); return ois.readObject(); } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } } }
使用时直接调用公共方法就行