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 867484f..6e0bf3b 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java @@ -18,6 +18,7 @@ import com.yolo.keyborad.model.entity.KeyboardUserCharacter; import com.yolo.keyborad.model.vo.character.KeyboardCharacterRespVO; import com.yolo.keyborad.model.vo.character.KeyboardUserCharacterVO; import jakarta.annotation.Resource; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yolo.keyborad.model.entity.KeyboardCharacter; @@ -27,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.stream.Stream; /* * @author: ziin @@ -48,7 +50,7 @@ public class KeyboardCharacterServiceImpl extends ServiceImpl redisTemplate; + private RedisTemplate redisTemplate; @Override public KeyboardCharacter getById(java.io.Serializable id) { @@ -57,7 +59,7 @@ public class KeyboardCharacterServiceImpl extends ServiceImpl selectListWithRank() { long userId = StpUtil.getLoginIdAsLong(); - 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); + } + } List userCharacterVOList = keyboardUserCharacterMapper.selectByUserId(userId);