| | |
| | | package com.zy.common.utils; |
| | | |
| | | import com.baomidou.mybatisplus.toolkit.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | |
| | | * redisTemplate封装 |
| | | * |
| | | */ |
| | | //@Component |
| | | @Component |
| | | public class RedisUtil { |
| | | |
| | | @Autowired |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | // @Autowired |
| | | // private RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | public RedisUtil(RedisTemplate<String, Object> redisTemplate) { |
| | | @Autowired |
| | | private RedisTemplate redisTemplate; |
| | | |
| | | @Autowired |
| | | private StringRedisTemplate stringRedisTemplate; |
| | | |
| | | private static final String LOCK_PREFIX = "lock:"; |
| | | private static final long DEFAULT_EXPIRE_TIME = 10; // 默认锁过期时间,单位为分钟 |
| | | |
| | | public RedisUtil(RedisTemplate redisTemplate) { |
| | | this.redisTemplate = redisTemplate; |
| | | } |
| | | |
| | | /** |
| | | * Redis加锁的操作 |
| | | */ |
| | | public Boolean tryLock(String key) { |
| | | String redisKey = LOCK_PREFIX + key; |
| | | return redisTemplate.opsForValue().setIfAbsent(redisKey, "locked", DEFAULT_EXPIRE_TIME, TimeUnit.MINUTES); |
| | | } |
| | | |
| | | /** |
| | | * Redis解锁的操作 |
| | | */ |
| | | public void unlock(String lockKey) { |
| | | String redisKey = LOCK_PREFIX + lockKey; |
| | | redisTemplate.delete(redisKey); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取全部数据 |
| | | * @return |
| | | */ |
| | | public HashMap<Object, Object> getRedis() { |
| | | Set<String> keys = redisTemplate.keys("*"); |
| | | HashMap<Object, Object> map = new HashMap<>(); |
| | | for (String key : keys) { |
| | | Object value = redisTemplate.opsForValue().get(key); |
| | | map.put(key, value); |
| | | } |
| | | |
| | | return map;//返回全部数据集合 |
| | | } |
| | | |
| | | /** |
| | | * 普通缓存放入 |
| | | * |
| | | * @param key 键 |
| | |
| | | public boolean set(String key, Object value) { |
| | | try { |
| | | redisTemplate.opsForValue().set(key, value); |
| | | long start = System.currentTimeMillis(); |
| | | while (System.currentTimeMillis() - start < 10000) {//有效期10s |
| | | Object o = redisTemplate.opsForValue().get(key); |
| | | if (o == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (o.equals(value)) { |
| | | break; |
| | | } |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |