Quellcode durchsuchen

树形列表缓存修改添加

小么熊🐻 vor 3 Jahren
Ursprung
Commit
8ac55f7149

+ 8 - 0
zzjs-common/src/main/java/com/miaxis/common/core/domain/Response.java

@@ -2,6 +2,10 @@ package com.miaxis.common.core.domain;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 
@@ -12,6 +16,10 @@ import java.io.Serializable;
  * @date 2020-11-12
  */
 @ApiModel(description = "结果返回类")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class Response<T> implements Serializable {
     @ApiModelProperty(value = "状态码")
     private Integer code;

+ 59 - 6
zzjs-framework/src/main/java/com/miaxis/framework/config/RedisConfig.java

@@ -3,14 +3,24 @@ package com.miaxis.framework.config;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.cache.CacheManager;
 import org.springframework.cache.annotation.CachingConfigurerSupport;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializationContext;
+import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 
+import java.time.Duration;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * redis配置
  * 
@@ -26,18 +36,61 @@ public class RedisConfig extends CachingConfigurerSupport
     {
         RedisTemplate<Object, Object> template = new RedisTemplate<>();
         template.setConnectionFactory(connectionFactory);
+        //序列化实现
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        // 使用StringRedisSerializer来序列化和反序列化redis的key值
+        template.setKeySerializer(stringRedisSerializer);
+        template.setHashKeySerializer(stringRedisSerializer);
+        // hash的value序列化方式采用fastJson
+        template.setValueSerializer(fastJson2JsonRedisSerializer());
+        template.setHashValueSerializer(fastJson2JsonRedisSerializer());
+        template.afterPropertiesSet();
+        return template;
+    }
 
+    /**
+     * fastJson序列化
+     * @return
+     */
+    public RedisSerializer<Object> fastJson2JsonRedisSerializer() {
+        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
         FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);
-
         ObjectMapper mapper = new ObjectMapper();
         mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
         mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
         serializer.setObjectMapper(mapper);
+        return serializer;
+    }
 
-        template.setValueSerializer(serializer);
-        // 使用StringRedisSerializer来序列化和反序列化redis的key值
-        template.setKeySerializer(new StringRedisSerializer());
-        template.afterPropertiesSet();
-        return template;
+
+    @Bean
+    public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
+
+        //生成一个默认配置,通过config对象即可对缓存进行自定义配置
+        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
+        config = config
+                // 设置 key为string序列化
+                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
+                // 设置value为json序列化
+                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJson2JsonRedisSerializer() ))
+                // 不缓存空值
+                .disableCachingNullValues()
+                // 设置缓存的默认过期时间 30分钟
+                .entryTtl(Duration.ofMinutes(30L));
+
+        //特殊缓存空间应用不同的配置
+        Map<String, RedisCacheConfiguration> map = new HashMap<>();
+        map.put("video", config.entryTtl(Duration.ofMinutes(15L)));//provider1缓存空间过期时间 15分钟
+    //    map.put("provider2", config.entryTtl(Duration.ofHours(1L)));//provider2缓存空间过期时间 1小时
+
+        //使用自定义的缓存配置初始化一个RedisCacheManager
+        RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory)
+                .cacheDefaults(config) //默认配置
+                .withInitialCacheConfigurations(map) //特殊缓存
+                .transactionAware() //事务
+                .build();
+
+        return cacheManager;
     }
+
 }

+ 2 - 0
zzjs-service/src/main/java/com/miaxis/teachingVideo/service/impl/TeachingVideoInfoServiceImpl.java

@@ -28,6 +28,7 @@ import com.tencentcloudapi.vod.v20180717.models.ModifyMediaInfoRequest;
 import com.tencentcloudapi.vod.v20180717.models.ModifyMediaInfoResponse;
 import lombok.AllArgsConstructor;
 import org.apache.commons.codec.binary.Base64;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -316,6 +317,7 @@ public class TeachingVideoInfoServiceImpl extends ServiceImpl<TeachingVideoInfoM
     }
 
     @Override
+    @Cacheable(cacheNames="video",key="'getTeachingVideoByTypeId'+#typeId")
     public Response getTeachingVideoByTypeId(Long typeId) {
         return Response.success(teachingVideoInfoMapper.getTeachingVideoByTypeId(typeId));
     }