src/main/java/com/zy/common/utils/NavigateMapData.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/utils/RedisUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -241,6 +241,11 @@ */ public boolean writeNavigateNodeToRedisMap(List<NavigateNode> nodes, boolean lock) { RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class); try { if (!redisUtil.tryLock("realtimeBasMap_" + lev)) { return false;//加锁失败 } Object o = redisUtil.get("realtimeBasMap_" + lev); if (o == null) { return false; @@ -275,6 +280,12 @@ basMap.setUpdateTime(new Date()); //将数据库地图数据存入redis redisUtil.set("realtimeBasMap_" + lev, JSON.toJSONString(basMap)); } catch (Exception e) { e.printStackTrace(); }finally { //解锁 redisUtil.unlock("realtimeBasMap_" + lev); } return true; } src/main/java/com/zy/common/utils/RedisUtil.java
@@ -1,5 +1,6 @@ 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; @@ -25,11 +26,33 @@ @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); } /** * 指定缓存失效时间 * * @param key 键