Przeglądaj źródła

将spring缓存实现替换为redis,以实现分布式统一缓存

NorthLan 7 lat temu
rodzic
commit
6f6bf6fa4d

+ 3 - 1
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/impl/SysDicServiceImpl.kt

@@ -40,7 +40,9 @@ class SysDicServiceImpl : ServiceImpl<SysDicMapper, SysDic>(), ISysDicService, C
         if (cached != null) {
             return cached
         }
-        return baseMapper.selectByParams(null)
+        val ret = baseMapper.selectByParams(null)
+        CacheUtil.put(CACHEKEYS.SYS, CACHE_KEY_ALL, ret)
+        return ret
     }
 
     override fun getList(enable: Boolean?): MutableList<SysDic> {

+ 3 - 1
zen-api/src/main/kotlin/com/gxzc/zen/api/sys/service/impl/SysParamServiceImpl.kt

@@ -40,7 +40,9 @@ class SysParamServiceImpl : ServiceImpl<SysParamMapper, SysParam>(), ISysParamSe
         if (cached != null) {
             return cached
         }
-        return baseMapper.selectByParams(null)
+        val ret = baseMapper.selectByParams(null)
+        CacheUtil.put(CACHEKEYS.SYS, CACHE_KEY_ALL, ret)
+        return ret
     }
 
     override fun getList(enable: Boolean?): MutableList<SysParam> {

+ 2 - 1
zen-core/src/main/kotlin/com/gxzc/zen/common/base/BaseModel.kt

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.enums.FieldStrategy
 import com.baomidou.mybatisplus.enums.IdType
 import com.fasterxml.jackson.annotation.JsonInclude
 import io.swagger.annotations.ApiModelProperty
+import java.io.Serializable
 import java.util.*
 
 /**
@@ -15,7 +16,7 @@ import java.util.*
  * @author NorthLan at 2017/12/8
  */
 @JsonInclude(JsonInclude.Include.NON_NULL) // jackson 忽略空值
-open class BaseModel {
+open class BaseModel : Serializable {
     // 主键
     @TableId(type = IdType.AUTO)
     var id: Long? = null

+ 2 - 2
zen-core/src/main/kotlin/com/gxzc/zen/common/config/cache/caffeine/CacheConfig.kt

@@ -18,8 +18,8 @@ import java.util.concurrent.TimeUnit
  */
 @Configuration
 @EnableCaching
-@ConfigurationProperties(prefix = "cache")
-@ConditionalOnProperty(prefix = "cache", name = ["enable"], havingValue = "true")
+@ConfigurationProperties(prefix = "cache.caffeine")
+@ConditionalOnProperty(prefix = "spring.cache", name = ["type"], havingValue = "caffeine")
 class CacheConfig {
 
     var cacheSpecs: Map<String, CacheSpec>? = null

+ 31 - 0
zen-core/src/main/kotlin/com/gxzc/zen/common/config/cache/redis/RedisConfig.kt

@@ -0,0 +1,31 @@
+package com.gxzc.zen.common.config.cache.redis
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
+import org.springframework.cache.CacheManager
+import org.springframework.cache.annotation.EnableCaching
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.data.redis.cache.RedisCacheManager
+import org.springframework.data.redis.core.RedisTemplate
+import org.springframework.data.redis.serializer.StringRedisSerializer
+
+/**
+ * Redis 缓存配置
+ * 缓存管理器
+ * @author NorthLan
+ * @date 2018/3/29
+ * @url https://noahlan.com
+ */
+@Configuration
+@EnableCaching
+@ConditionalOnProperty(prefix = "spring.cache", name = ["type"], havingValue = "redis")
+class RedisConfig {
+
+    @Bean
+    fun cacheManager(redisTemplate: RedisTemplate<Any, Any>): CacheManager {
+        return RedisCacheManager(redisTemplate.apply {
+            keySerializer = StringRedisSerializer()
+            hashKeySerializer = StringRedisSerializer()
+        })
+    }
+}

+ 37 - 28
zen-web/src/main/resources/application-cache.yml

@@ -1,35 +1,44 @@
 ############## cache 配置 ##############
 spring:
   cache:
-    type: caffeine
+    type: redis # 使用什么作为缓存框架
+    # type: caffeine
     caffeine:
       spec:
-
-################ cache配置说明 以下配置均为默认值(不填即默认) #######################
-# initialCapacity: -1 # 初始化容量 默认-1
-# maximumSize: -1 # 最大容量 默认-1 超出部分TinyLfu移除
-# maximumWeight: -1 # 最大权重,与maximumSize冲突
-# expireAfterAccess: -1 # 最后一次写入或访问后经过固定时间过期 以expireAfterWrite为准
-# expireAfterWrite: -1 # 最后一次写入后经过固定时间过期
-# refreshAfterWrite: -1 # 创建缓存或者最近一次更新缓存后经过固定的时间间隔刷新缓存
-# recordStats: false # 开发统计功能
-# weakKeys: false # 该key是否为弱引用
-# weakValues: false # 该key对应的values是否为弱引用 与softValues冲突
-# softValues: false # 该key对应的values是否为软引用
-#################################################################################
+  redis:
+    host: 192.168.1.204
+    port: 6379
+    password:
+    pool:
+      min-idle: 1
+      max-idle: 20
+      max-active: 20
+      max-wait: -1
 
 cache:
-  enable: true # 是否生效
-  cache-specs: # see also {CaffeineSpec}
-    user: # cache name
-      initialCapacity: -1 # 初始化容量 默认-1
-      maximumSize: 100 # 最大容量
-    user_perm: # cache name
-      initialCapacity: -1 # 初始化容量 默认-1
-      maximumSize: 100 # 最大容量
-    user_role: # cache name
-      initialCapacity: -1 # 初始化容量 默认-1
-      maximumSize: 100 # 最大容量
-    sys: # cache name
-      initialCapacity: -1 # 初始化容量 默认-1
-      maximumSize: 128 # 最大容量
+  caffeine:
+  ################ cache配置说明 以下配置均为默认值(不填即默认) #######################
+  # initialCapacity: -1 # 初始化容量 默认-1
+  # maximumSize: -1 # 最大容量 默认-1 超出部分TinyLfu移除
+  # maximumWeight: -1 # 最大权重,与maximumSize冲突
+  # expireAfterAccess: -1 # 最后一次写入或访问后经过固定时间过期 以expireAfterWrite为准
+  # expireAfterWrite: -1 # 最后一次写入后经过固定时间过期
+  # refreshAfterWrite: -1 # 创建缓存或者最近一次更新缓存后经过固定的时间间隔刷新缓存
+  # recordStats: false # 开发统计功能
+  # weakKeys: false # 该key是否为弱引用
+  # weakValues: false # 该key对应的values是否为弱引用 与softValues冲突
+  # softValues: false # 该key对应的values是否为软引用
+  #################################################################################
+    cache-specs: # see also {CaffeineSpec}
+      user: # cache name
+        initialCapacity: -1 # 初始化容量 默认-1
+        maximumSize: 100 # 最大容量
+      user_perm: # cache name
+        initialCapacity: -1 # 初始化容量 默认-1
+        maximumSize: 100 # 最大容量
+      user_role: # cache name
+        initialCapacity: -1 # 初始化容量 默认-1
+        maximumSize: 100 # 最大容量
+      sys: # cache name
+        initialCapacity: -1 # 初始化容量 默认-1
+        maximumSize: 128 # 最大容量]