diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java index 6e0bf3b..1e9f53b 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java @@ -97,10 +97,21 @@ public class KeyboardCharacterServiceImpl extends ServiceImpl selectListByTag(Long tagId) { - List keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() - .eq(KeyboardCharacter::getDeleted, false) - .eq(KeyboardCharacter::getTag, tagId) - .orderByDesc(KeyboardCharacter::getRank)); + // 先从缓存获取指定标签的人设列表 + String cacheKey = "character:list:tag:" + tagId; + List keyboardCharacters = (List) redisTemplate.opsForValue().get(cacheKey); + + if (keyboardCharacters == null) { + // 缓存未命中,从数据库查询 + keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() + .eq(KeyboardCharacter::getDeleted, false) + .eq(KeyboardCharacter::getTag, tagId) + .orderByDesc(KeyboardCharacter::getRank)); + // 缓存到Redis,7天过期 + if (keyboardCharacters != null && !keyboardCharacters.isEmpty()) { + redisTemplate.opsForValue().set(cacheKey, keyboardCharacters, 7, TimeUnit.DAYS); + } + } long userId = StpUtil.getLoginIdAsLong(); List userCharacterVOList = keyboardUserCharacterMapper.selectByUserId(userId); @@ -181,18 +192,40 @@ public class KeyboardCharacterServiceImpl extends ServiceImpl selectListWithNotLoginRank() { - List keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() - .eq(KeyboardCharacter::getDeleted, false) - .orderByAsc(KeyboardCharacter::getRank)); + // 先从缓存获取所有人设列表 + String cacheKey = "character:list:all"; + List keyboardCharacters = (List) redisTemplate.opsForValue().get(cacheKey); + + if (keyboardCharacters == null) { + // 缓存未命中,从数据库查询 + keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() + .eq(KeyboardCharacter::getDeleted, false) + .orderByAsc(KeyboardCharacter::getRank)); + // 缓存到Redis,7天过期 + if (keyboardCharacters != null && !keyboardCharacters.isEmpty()) { + redisTemplate.opsForValue().set(cacheKey, keyboardCharacters, 7, TimeUnit.DAYS); + } + } return BeanUtil.copyToList(keyboardCharacters, KeyboardCharacterRespVO.class); } @Override public List selectListByTagWithNotLogin(Long tagId) { - List keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() - .eq(KeyboardCharacter::getDeleted, false) - .eq(KeyboardCharacter::getTag, tagId) - .orderByDesc(KeyboardCharacter::getRank)); + // 先从缓存获取指定标签的人设列表 + String cacheKey = "character:list:tag:" + tagId; + List keyboardCharacters = (List) redisTemplate.opsForValue().get(cacheKey); + + if (keyboardCharacters == null) { + // 缓存未命中,从数据库查询 + keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() + .eq(KeyboardCharacter::getDeleted, false) + .eq(KeyboardCharacter::getTag, tagId) + .orderByDesc(KeyboardCharacter::getRank)); + // 缓存到Redis,7天过期 + if (keyboardCharacters != null && !keyboardCharacters.isEmpty()) { + redisTemplate.opsForValue().set(cacheKey, keyboardCharacters, 7, TimeUnit.DAYS); + } + } return BeanUtil.copyToList(keyboardCharacters, KeyboardCharacterRespVO.class); }