跳至内容
技术分享
站点工具
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
登录
搜索
您的足迹:
服务器技术:java:redisclient
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
<p><br/>import java.io.IOException;<br/>import java.util.List;<br/>import java.util.UUID;<br/><br/>import org.slf4j.Logger;<br/>import org.slf4j.LoggerFactory;<br/>import org.springframework.beans.factory.annotation.Autowired;<br/>import org.springframework.beans.factory.annotation.Qualifier;<br/>import org.springframework.beans.factory.annotation.Value;<br/>import org.springframework.stereotype.Component;<br/><br/>import com.fasterxml.jackson.core.JsonProcessingException;<br/>import com.fasterxml.jackson.databind.ObjectMapper;<br/><br/>import redis.clients.jedis.Jedis;<br/>import redis.clients.jedis.JedisSentinelPool;<br/><br/>@Component<br/>public class RedisClient {<br/><br/> @Autowired<br/> @Qualifier("jedisSentinelPool")<br/> private JedisSentinelPool jedisSentinelPool;<br/><br/> @Value("${redis.key.prefix}")<br/> private String prefix;<br/><br/> Logger logger = LoggerFactory.getLogger(RedisClient.class);<br/><br/> private ObjectMapper objectMapper = new ObjectMapper();<br/><br/> /**<br/> * 从Redis缓存获取数据<br/> * <br/> * @param redisKey<br/> * @return<br/> */<br/> public Object getObjFromRedis(String redisKey) {<br/> redisKey = prefix + redisKey;<br/> Jedis jedis = getJedisResource();<br/> String jsonStr = null;<br/> try {<br/> jsonStr = jedis.get(redisKey);<br/> } finally {<br/> if (jedis != null) {<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/> }<br/><br/> if (jsonStr != null) {<br/> try {<br/> return objectMapper.readValue(jsonStr, Object.class);<br/> } catch (IOException e) {<br/> logger.error("反序列化失败", e);<br/> }<br/><br/> }<br/><br/> return null;<br/> }<br/><br/> public <T> T getObjFromRedis(String redisKey, Class<T> clazz) {<br/> redisKey = prefix + redisKey;<br/> Jedis jedis = getJedisResource();<br/> String jsonStr = null;<br/> try {<br/> jsonStr = jedis.get(redisKey);<br/> } finally {<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> if (jsonStr != null) {<br/> try {<br/> return objectMapper.readValue(jsonStr, clazz);<br/> } catch (IOException e) {<br/> logger.error("反序列化失败", e);<br/> }<br/> }<br/><br/> return null;<br/> }<br/><br/> public Long incr(String redisKey) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> Long num = null;<br/> try {<br/> num = jedis.incr(redisKey);<br/> } finally {<br/> // 归还资源<br/> // jedisPool.returnResource(jedis);<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return num;<br/><br/> }<br/><br/> public Long incrBy(String redisKey, int offset) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> Long num = null;<br/> try {<br/> num = jedis.incrBy(redisKey, offset);<br/> } finally {<br/> // 归还资源<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return num;<br/><br/> }<br/><br/> public Long decrBy(String redisKey, int offset) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> Long num = null;<br/> try {<br/> num = jedis.decrBy(redisKey, offset);<br/> } finally {<br/> // 归还资源<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return num;<br/><br/> }<br/><br/> public Long decr(String redisKey) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> Long num = 0L;<br/> try {<br/> num = jedis.decr(redisKey);<br/> } finally {<br/> // 归还资源<br/> if(null != jedis)<br/> jedis.close();<br/> }<br/><br/> return num;<br/><br/> }<br/><br/> public Jedis getJedisResource() {<br/> Jedis jedis = null;<br/> try {<br/> jedis = jedisSentinelPool.getResource();<br/> if (jedis != null) {<br/> return jedis;<br/> }<br/> } catch (Exception e) {<br/> logger.warn("=============Redis Resource Is Not alived====================", e);<br/> if (jedis != null) {<br/> // jedisPool.returnBrokenResource(jedis);<br/> jedis.close();<br/> }<br/> }<br/><br/> return null;<br/> }<br/><br/> public String set(String redisKey, String value) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> String ret = null;<br/> try {<br/> ret = jedis.set(redisKey, value);<br/> } finally {<br/> // 归还资源<br/> // jedisPool.returnResource(jedis);<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return ret;<br/><br/> }<br/><br/> public String set(String redisKey, String value, int seconds) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> String ret = null;<br/> try {<br/> ret = jedis.setex(redisKey, seconds, value);<br/> } finally {<br/> // 归还资源<br/> // jedisPool.returnResource(jedis);<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return ret;<br/><br/> }<br/><br/> public Long delete(String redisKey) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> Long ret = null;<br/> try {<br/> ret = jedis.del(redisKey);<br/> } finally {<br/> // 归还资源<br/> // jedisPool.returnResource(jedis);<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return ret;<br/><br/> }<br/><br/> public String set(String redisKey, Long value) {<br/><br/> return this.set(redisKey, String.valueOf(value));<br/> }<br/><br/> public synchronized Long getLong(String redisKey) {<br/> Long l = null;<br/> String str = this.get(redisKey);<br/> if (str != null) {<br/> l = Long.valueOf(str);<br/> }<br/> return l;<br/> }<br/><br/> public String get(String redisKey) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> Jedis jedis = getJedisResource();<br/> String str = null;<br/> try {<br/> str = jedis.get(redisKey);<br/> } finally {<br/> // 归还资源<br/> // jedisPool.returnResource(jedis);<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return str;<br/><br/> }<br/><br/> /**<br/> * 一次获取多个<br/> * <br/> * @param redisKey<br/> * @return<br/> */<br/> public List<String> mget(String[] redisKey) {<br/><br/> // redisKey = prefix + redisKey;<br/> if (redisKey != null) {<br/> for (int i = 0; i < redisKey.length; i++) {<br/> redisKey[i] = prefix + redisKey[i];<br/> }<br/> }<br/><br/> Jedis jedis = getJedisResource();<br/> List<String> str = null;<br/> try {<br/> str = jedis.mget(redisKey);<br/> } finally {<br/><br/> // 归还资源<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return str;<br/><br/> }<br/><br/> public String saveObjToRedis(String redisKey, Object obj, int seconds) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> String value;<br/> try {<br/> value = objectMapper.writeValueAsString(obj);<br/> } catch (JsonProcessingException e) {<br/> logger.error("json序列化失败", e);<br/> return "FAIL";<br/> }<br/><br/> Jedis jedis = getJedisResource();<br/> String code = null;<br/> try {<br/> code = jedis.setex(redisKey, seconds, value);<br/> } finally {<br/> // 归还资源<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return code;<br/> }<br/><br/> /**<br/> * 保存数据到Redis<br/> * <br/> * @param redisKey @throws<br/> */<br/> public String saveObjToRedis(String redisKey, Object obj) {<br/><br/> redisKey = prefix + redisKey;<br/><br/> String value;<br/> try {<br/> value = objectMapper.writeValueAsString(obj);<br/> } catch (JsonProcessingException e) {<br/> logger.error("json序列化失败", e);<br/> return "FAIL";<br/> }<br/><br/> Jedis jedis = getJedisResource();<br/> String code = null;<br/> try {<br/> code = jedis.set(redisKey, value);<br/> } finally {<br/> // 归还资源<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return code;<br/> }<br/><br/> public String lock(String lockKey, int seconds) {<br/><br/> String redisKey = prefix + lockKey;<br/><br/> String lockedValue = UUID.randomUUID().toString();<br/> Jedis jedis = getJedisResource();<br/> try {<br/> Long result = jedis.setnx(redisKey, lockedValue);<br/><br/> // 加锁失败<br/> if (result <= 0) {<br/><br/> return lockedValue;<br/> }<br/> if (result > 0 && seconds > 0) {<br/> jedis.expire(redisKey, seconds);<br/><br/> }<br/> // 归还资源<br/> // jedisPool.returnResource(jedis);<br/> } finally {<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return lockedValue;<br/><br/> }<br/><br/> public Long unlock(String lockKey, String lockedValue) {<br/><br/> String redisKey = prefix + lockKey;<br/><br/> Jedis jedis = getJedisResource();<br/><br/> try {<br/> String target = jedis.get(redisKey);<br/><br/> if (target != null && target.equals(lockedValue)) {<br/> return jedis.del(redisKey);<br/> }<br/> } finally {<br/> // 归还资源<br/> // jedisPool.returnResource(jedis);<br/> if (null != jedis)<br/> jedis.close();<br/> }<br/><br/> return -1l;<br/> }<br/><br/> @Override<br/> protected void finalize() throws Throwable {<br/><br/> jedisSentinelPool.destroy();<br/> super.finalize();<br/><br/> }<br/>}</p>
服务器技术/java/redisclient.txt
· 最后更改: 2020/07/08 18:23 由
chenjinlian
页面工具
显示页面
修订记录
反向链接
页面重命名
回到顶部