From 1c58a17cbc53de16c96cb913acc69fb2c21bfb03 Mon Sep 17 00:00:00 2001 From: zhongzb <972627721@qq.com> Date: Mon, 24 Apr 2023 22:59:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=94=B9=E6=88=90=E5=85=A8?= =?UTF-8?q?=E4=BD=BF=E7=94=A8string=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/common/config/RedisConfig.java | 14 +++++++++++++- .../mallchat/common/common/utils/RedisUtils.java | 16 ++++++++++++---- .../common/user/service/cache/UserCache.java | 2 +- .../service/impl/UserBackpackServiceImpl.java | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/common/config/RedisConfig.java b/mallchat-common/src/main/java/com/abin/mallchat/common/common/config/RedisConfig.java index 0bdf4b0..1988a54 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/common/config/RedisConfig.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/common/config/RedisConfig.java @@ -1,5 +1,9 @@ package com.abin.mallchat.common.common.config; +import cn.hutool.json.JSONUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.SneakyThrows; +import net.sf.json.util.JSONUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; @@ -49,10 +53,18 @@ public class RedisConfig { if (source == null || source.length == 0) { return null; } - if (type.isInstance(String.class) || type.isInstance(Character.class)) { + if (type.isAssignableFrom(String.class) || type.isAssignableFrom(Character.class)) { return (T) new String(source); } return super.deserialize(source, type); } } + + @SneakyThrows + public static void main(String[] args) { + ObjectMapper objectMapper =new ObjectMapper(); + System.out.println(objectMapper.writeValueAsString(1)); + System.out.println(objectMapper.writeValueAsString("1")); + System.out.println(objectMapper.writeValueAsString(Boolean.TRUE)); + } } diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/RedisUtils.java b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/RedisUtils.java index 5124b44..bd86f03 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/RedisUtils.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/common/utils/RedisUtils.java @@ -228,7 +228,7 @@ public class RedisUtils { } public List mget(Collection keys, Class tClass) { - List list = redisTemplate.opsForValue().multiGet(keys); + List list = stringRedisTemplate.opsForValue().multiGet(keys); return (List) list.stream().map(o -> toBeanOrNull(o, tClass)).collect(Collectors.toList()); } @@ -242,9 +242,17 @@ public class RedisUtils { throw new UnsupportedOperationException(e); } } + public static String objToStr(Object o) { + try { + return jsonMapper.writeValueAsString(o); + } catch (Exception e) { + throw new UnsupportedOperationException(e); + } + } public void mset(Map map, long time) { - redisTemplate.opsForValue().multiSet(map); + Map collect = map.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, (e) -> objToStr(e.getValue()))); + stringRedisTemplate.opsForValue().multiSet(collect); map.forEach((key, value) -> { expire(key, time); }); @@ -915,7 +923,7 @@ public class RedisUtils { */ public Set> zReverseRangeWithScores(String key, long pageSize) { - return redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, Double.MIN_VALUE, + return stringRedisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, Double.MIN_VALUE, Double.MAX_VALUE, 0, pageSize); } @@ -927,7 +935,7 @@ public class RedisUtils { */ public Set> zReverseRangeByScoreWithScores(String key, double max, long pageSize) { - return redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, Double.MIN_VALUE, max, + return stringRedisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, Double.MIN_VALUE, max, 1, pageSize); } diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/cache/UserCache.java b/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/cache/UserCache.java index dddb74d..2217af1 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/cache/UserCache.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/cache/UserCache.java @@ -92,7 +92,7 @@ public class UserCache { public Map getUserInfoBatch(Set uids) { List keys = uids.stream().map(a -> RedisKey.getKey(RedisKey.USER_INFO_STRING, a)).collect(Collectors.toList()); List mget = redisUtils.mget(keys, User.class); - Map map = mget.stream().collect(Collectors.toMap(User::getId, Function.identity())); + Map map = mget.stream().filter(Objects::nonNull).collect(Collectors.toMap(User::getId, Function.identity())); //还需要load更新的uid List needLoadUidList = uids.stream().filter(a -> !map.containsKey(a)).collect(Collectors.toList()); if (CollUtil.isNotEmpty(needLoadUidList)) { diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/impl/UserBackpackServiceImpl.java b/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/impl/UserBackpackServiceImpl.java index d702329..db1c47a 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/impl/UserBackpackServiceImpl.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/user/service/impl/UserBackpackServiceImpl.java @@ -34,7 +34,7 @@ public class UserBackpackServiceImpl implements IUserBackpackService { @Override @RedissonLock(key = "#uid") - public void acquireItem(Long uid, Long itemId, IdempotentEnum idempotentEnum, String businessId) {//todo 分布式锁 + public void acquireItem(Long uid, Long itemId, IdempotentEnum idempotentEnum, String businessId) { String idempotent = getIdempotent(itemId, idempotentEnum, businessId); UserBackpack userBackpack = userBackpackDao.getByIdp(idempotent); //幂等检查