Sfoglia il codice sorgente

设定首页缓存时间为两小时

guo00guo 5 anni fa
parent
commit
375374f1ce

+ 55 - 0
site/src/main/java/com/mooctest/crowd/site/configuration/RedisSessionConfiguration.java

@@ -1,13 +1,26 @@
 package com.mooctest.crowd.site.configuration;
 package com.mooctest.crowd.site.configuration;
 
 
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 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.cache.RedisCacheWriter;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+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.RedisSerializer;
 import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
 import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
 import org.springframework.session.web.http.CookieSerializer;
 import org.springframework.session.web.http.CookieSerializer;
 import org.springframework.session.web.http.DefaultCookieSerializer;
 import org.springframework.session.web.http.DefaultCookieSerializer;
 
 
+import java.time.Duration;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
 /**
  * @author: Diors.Po
  * @author: Diors.Po
  * @Email: 171256175@qq.com
  * @Email: 171256175@qq.com
@@ -20,6 +33,8 @@ public class RedisSessionConfiguration {
     @Value("${website.domain}")
     @Value("${website.domain}")
     private String domainName;
     private String domainName;
 
 
+    @Value("${cache.expire.duration}")
+    private int expireDuration;
 
 
     @Bean
     @Bean
     public CookieSerializer cookieSerializer() {
     public CookieSerializer cookieSerializer() {
@@ -40,4 +55,44 @@ public class RedisSessionConfiguration {
         return new CustomSessionDefaultRedisSerializer();
         return new CustomSessionDefaultRedisSerializer();
     }
     }
 
 
+    /**
+     * 最新版,设置redis缓存过期时间
+     */
+
+    @Bean
+    public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
+        return new RedisCacheManager(
+                RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
+                this.getRedisCacheConfigurationWithTtl(expireDuration), // 默认策略,未配置的 key 会使用这个
+                this.getRedisCacheConfigurationMap() // 指定 key 策略
+        );
+    }
+
+    private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {
+        Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
+        //SsoCache和BasicDataCache进行过期时间配置
+        redisCacheConfigurationMap.put("messageCache", this.getRedisCacheConfigurationWithTtl(30 * 60));
+
+        //自定义设置缓存时间
+        redisCacheConfigurationMap.put("userCache", this.getRedisCacheConfigurationWithTtl(expireDuration));
+
+        return redisCacheConfigurationMap;
+    }
+
+    private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Integer seconds) {
+        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
+        redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
+                RedisSerializationContext
+                        .SerializationPair
+                        .fromSerializer(jackson2JsonRedisSerializer)
+        ).entryTtl(Duration.ofSeconds(seconds));
+
+        return redisCacheConfiguration;
+    }
+
 }
 }

+ 4 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/CompetitionVO.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.site.data.vo;
 package com.mooctest.crowd.site.data.vo;
 
 
 import com.mooctest.crowd.domain.domainobject.Competition;
 import com.mooctest.crowd.domain.domainobject.Competition;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.sql.Timestamp;
 import java.sql.Timestamp;
@@ -11,6 +13,8 @@ import java.sql.Timestamp;
  * @date 2019/7/6 17:54
  * @date 2019/7/6 17:54
  */
  */
 @Data
 @Data
+@NoArgsConstructor
+@AllArgsConstructor
 public class CompetitionVO implements Serializable {
 public class CompetitionVO implements Serializable {
     private Long id;
     private Long id;
     private String name;
     private String name;

+ 4 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/FieldVO.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.site.data.vo;
 package com.mooctest.crowd.site.data.vo;
 
 
 import com.mooctest.crowd.domain.domainobject.Field;
 import com.mooctest.crowd.domain.domainobject.Field;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 
 
@@ -10,6 +12,8 @@ import java.io.Serializable;
  * @date 2019/7/6 17:54
  * @date 2019/7/6 17:54
  */
  */
 @Data
 @Data
+@NoArgsConstructor
+@AllArgsConstructor
 public class FieldVO implements Serializable {
 public class FieldVO implements Serializable {
     private String code;
     private String code;
     private String name;
     private String name;

+ 4 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/PartnerVO.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.site.data.vo;
 package com.mooctest.crowd.site.data.vo;
 
 
 import com.mooctest.crowd.domain.domainobject.Partner;
 import com.mooctest.crowd.domain.domainobject.Partner;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 
 
@@ -10,6 +12,8 @@ import java.io.Serializable;
  * @date 2019/7/6 17:54
  * @date 2019/7/6 17:54
  */
  */
 @Data
 @Data
+@NoArgsConstructor
+@AllArgsConstructor
 public class PartnerVO implements Serializable {
 public class PartnerVO implements Serializable {
     private Long id;
     private Long id;
     private String name;
     private String name;

+ 4 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ResourceVO.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.site.data.vo;
 package com.mooctest.crowd.site.data.vo;
 
 
 import com.mooctest.crowd.domain.domainobject.Resource;
 import com.mooctest.crowd.domain.domainobject.Resource;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 
 
@@ -10,6 +12,8 @@ import java.io.Serializable;
  * @date 2019/7/6 17:54
  * @date 2019/7/6 17:54
  */
  */
 @Data
 @Data
+@NoArgsConstructor
+@AllArgsConstructor
 public class ResourceVO implements Serializable {
 public class ResourceVO implements Serializable {
     private String code;
     private String code;
     private String name;
     private String name;

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/UserVO.java

@@ -3,6 +3,7 @@ package com.mooctest.crowd.site.data.vo;
 import com.mooctest.crowd.domain.domainobject.Account;
 import com.mooctest.crowd.domain.domainobject.Account;
 import com.mooctest.crowd.domain.domainobject.User;
 import com.mooctest.crowd.domain.domainobject.User;
 import com.mooctest.crowd.domain.model.UserPO;
 import com.mooctest.crowd.domain.model.UserPO;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
@@ -16,6 +17,7 @@ import java.sql.Date;
  */
  */
 @Data
 @Data
 @NoArgsConstructor
 @NoArgsConstructor
+@AllArgsConstructor
 public class UserVO implements Serializable {
 public class UserVO implements Serializable {
     private Long id;
     private Long id;
     private String name;
     private String name;

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -52,7 +52,7 @@ public class CommonServiceImpl implements CommonService {
     }
     }
 
 
     @Override
     @Override
-    @Cacheable(value = "indexInfo",key = "#userId")
+    @Cacheable(value = "userCache",key = "#userId")
     public IndexInfoDTO getIndexInfos(Long userId){
     public IndexInfoDTO getIndexInfos(Long userId){
         IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfos();
         IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfos();
         return indexInfoDTO;
         return indexInfoDTO;

+ 1 - 1
site/src/main/resources/application.yml

@@ -56,7 +56,7 @@ oss:
 
 
 cache:
 cache:
   expire:
   expire:
-    duration: 60
+    duration: 7200
 
 
 agency: 7
 agency: 7