From efd9ac5b88dfdb3c4d2e4bcc5e7a5258aa55542c Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 21 四月 2025 20:29:15 +0800 Subject: [PATCH] 更换缓存连接方式 --- MessagePushTravel/src/main/java/com/sinata/push/util/RedisUtil.java | 216 +++++++++++++++++------------------------------------- 1 files changed, 68 insertions(+), 148 deletions(-) diff --git a/MessagePushTravel/src/main/java/com/sinata/push/util/RedisUtil.java b/MessagePushTravel/src/main/java/com/sinata/push/util/RedisUtil.java index 61d39a8..17a8e74 100644 --- a/MessagePushTravel/src/main/java/com/sinata/push/util/RedisUtil.java +++ b/MessagePushTravel/src/main/java/com/sinata/push/util/RedisUtil.java @@ -1,14 +1,15 @@ package com.sinata.push.util; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.Pipeline; +import org.springframework.util.StringUtils; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.UUID; +import java.util.concurrent.TimeUnit; /** @@ -16,25 +17,24 @@ */ @Component public class RedisUtil { - + @Autowired - private JedisPool jedisPool; - - + private RedisTemplate redisTemplate; + + + /** * 向redis中存储字符串没有过期时间 * @param key * @param value */ public void setStrValue(String key, String value){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - String set = resource.set(key, value); - resource.close(); + if(!StringUtils.isEmpty(key) && !StringUtils.isEmpty(value)){ + redisTemplate.opsForValue().set(key, value); } } - - + + /** * 以分钟为单位设置存储值(设置过期时间) * @param key @@ -42,174 +42,94 @@ * @param time 秒 */ public void setStrValue(String key, String value, int time){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - String setex = resource.setex(key, time, value); - resource.close(); + if(!StringUtils.isEmpty(key) && !StringUtils.isEmpty(value)){ + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); } } - - + + /** * 从redis中获取值 * @param key * @return */ public String getValue(String key){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - String data = resource.get(key); - resource.close(); + if(!StringUtils.isEmpty(key)){ + String data = (String) redisTemplate.opsForValue().get(key); return data; } return null; } - - - /** - * 批量获取 - * @param kes - * @return - */ - public List<Object> getValues(List<String> kes){ - if(null != kes){ - Jedis resource = jedisPool.getResource(); - Pipeline pipelined = resource.pipelined(); - for(String key : kes){ - pipelined.get(key); - } - List<Object> list = pipelined.syncAndReturnAll(); - resource.close(); - pipelined.clear(); - try { - pipelined.close(); - } catch (IOException e) { - e.printStackTrace(); - } - List<Object> data = new ArrayList<>(); - for(Object o : list){ - if(null != o){ - data.add(o); - } - } - return data; - } - return null; - } - - - /** - * 从右侧获取数据 - * @param key - * @return - */ - public String getValueList(String key){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - String s = resource.lpop(key); - resource.close(); - return s; - } - return null; - } - - - - - - - /** - * 从左侧添加数据到list中 - * @param key - * @param s - */ - public void addValueList(String key, String s){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - resource.rpush(key, s); - resource.close(); - } - } - - - - - + + + + /** * 删除key * @param key */ public void remove(String key){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - Long del = resource.del(key); - resource.close(); + if(!StringUtils.isEmpty(key)){ + redisTemplate.delete(key); } } - - + + + + + + + /** - * 删除list集合数据 + * redis加锁 * @param key - * @param count * @param value + * @param time + * @return */ - public void delValueList(String key, long count, String value){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - Long lrem = resource.lrem(key, count, value); - resource.close(); + public boolean lock(String key, String value, int time){ + if(!StringUtils.isEmpty(key)){ + key += "_lock"; + return redisTemplate.opsForValue().setIfAbsent(key, value); } + return false; } - - + /** - * 获取list集合数量 + * 获取redis锁 + * @param time + * @return + */ + public boolean lock(int time){ + String uuid = UUID.randomUUID().toString(); + return lock("redis", uuid, time); + } + + + public boolean lock(String key, int time){ + String uuid = UUID.randomUUID().toString(); + return lock(key, uuid, time); + } + + + /** + * redis释放锁 * @param key * @return */ - public Long getListCount(String key){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - Long length = resource.llen(key); - resource.close(); - return length; + public boolean unlock(String key){ + if(!StringUtils.isEmpty(key)){ + key += "_lock"; + return redisTemplate.delete(key); } - return 0L; + return false; } - - + /** - * 获取集合内容 - * @param key - * @param start - * @param end + * 删除锁 * @return */ - public List<String> getList(String key, long start, long end){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - List<String> lrange = resource.lrange(key, start, end); - resource.close(); - return lrange; - } - return new ArrayList<>(); - } - - - /** - * 获取list所有数据 - * @param key - * @return - */ - public List<String> getAllList(String key){ - if(StringUtil.isNotEmpty(key)){ - Jedis resource = jedisPool.getResource(); - Long llen = resource.llen(key); - List<String> lrange = resource.lrange(key, 0, llen - 1); - resource.close(); - return lrange; - } - return new ArrayList<>(); + public boolean unlock(){ + return unlock("redis"); } } -- Gitblit v1.7.1