hr~ пре 3 дана
родитељ
комит
0a189b742f

+ 4 - 0
product-common/pom.xml

@@ -43,6 +43,10 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>knife4j-spring-boot-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.redisson</groupId>
+            <artifactId>redisson-spring-boot-starter</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.auth0</groupId>
             <artifactId>java-jwt</artifactId>

+ 106 - 0
product-common/src/main/java/com/poyee/config/RedisConfig.java

@@ -0,0 +1,106 @@
+package com.poyee.config;
+
+import cn.hutool.core.util.StrUtil;
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.redisson.config.SentinelServersConfig;
+import org.redisson.config.SingleServerConfig;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.*;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import java.io.IOException;
+
+/**
+ * Redis配置
+ *
+ * @author zheng
+ */
+@Configuration
+@EnableCaching
+public class RedisConfig {
+    @Value("${spring.redis.host:127.0.0.1}")
+    private String host;
+    @Value("${spring.redis.port:6379}")
+    private String port;
+    @Value("${spring.redis.password}")
+    private String password;
+    @Value("${spring.redis.sentinel.nodes:127.0.0.1:6379}")
+    private String nodes;
+    @Value("${spring.redis.sentinel.master:master}")
+    private String master;
+
+    @Bean
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+        redisTemplate.setKeySerializer(new StringRedisSerializer());
+        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
+        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
+        // 开启事务
+        //redisTemplate.setEnableTransactionSupport(true);
+        redisTemplate.setConnectionFactory(factory);
+        return redisTemplate;
+
+    }
+
+    @Bean
+    public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForHash();
+    }
+
+    @Bean
+    public ValueOperations<String, String> valueOperations(RedisTemplate<String, String> redisTemplate) {
+        return redisTemplate.opsForValue();
+    }
+
+    @Bean
+    public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForList();
+    }
+
+    @Bean
+    public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForSet();
+    }
+
+    @Bean
+    public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForZSet();
+    }
+
+    @Bean(name = "redissonClient")
+    public RedissonClient redissonClientSingle() throws IOException {
+        Config config = new Config();
+        if (!"127.0.0.1:6379".equals(nodes) && !"master".equals(master)) {
+            SentinelServersConfig sentinelServers = config.useSentinelServers();
+            sentinelServers.addSentinelAddress("redis://" + nodes).setMasterName(master);
+            if (!StrUtil.isBlank(password)) {
+                sentinelServers.setPassword(password);
+            }
+        } else {
+            SingleServerConfig singleServer = config.useSingleServer();
+            singleServer.setAddress("redis://" + host + ":" + port);
+            if (!StrUtil.isBlank((password))) {
+                singleServer.setPassword(password);
+            }
+        }
+
+        return Redisson.create(config);
+    }
+
+    @Bean
+    public RedisMessageListenerContainer myRedisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
+        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
+        container.setConnectionFactory(connectionFactory);
+        return container;
+    }
+
+}

+ 9 - 7
product-web/src/main/resources/application-dev.yml

@@ -10,14 +10,16 @@ spring:
       min-idle: ${DB_MIN_IDLE:5}
       max-active: ${DB_MAX_ACTIVE:20}
       max-wait: ${DB_MAX_WAIT:60000}
-
-redisson:
-  single-server-config:
-    address: redis://${REDIS_HOST:192.168.50.8}:${REDIS_PORT:6379}
-    password: ${REDIS_PASSWORD:Pass2010}
+  redis:
     database: ${REDIS_DATABASE:1}
-    connection-minimum-idle-size: ${REDIS_MIN_IDLE:10}
-    connection-pool-size: ${REDIS_POOL_SIZE:64}
+    password: ${REDIS_PASSWORD:Pass2010}
+    host: ${REDIS_HOST:192.168.50.8}
+    port: ${REDIS_PORT:6379}
+    lettuce.pool:
+      max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
+      max-wait: -1ms    # 连接池最大阻塞等待时间(使用负值表示没有限制)
+      max-idle: 10      # 连接池中的最大空闲连接
+      min-idle: 5       # 连接池中的最小空闲连接
 
 management:
   endpoints:

+ 10 - 9
product-web/src/main/resources/application-prod.yml

@@ -14,15 +14,16 @@ spring:
       test-on-borrow: ${DB_TEST_ON_BORROW:true}
       test-while-idle: ${DB_TEST_WHILE_IDLE:true}
       time-between-eviction-runs-millis: ${DB_EVICTION_INTERVAL:60000}
-
-redisson:
-  single-server-config:
-    address: redis://${REDIS_HOST:prod-redis-host}:${REDIS_PORT:6379}
-    password: ${REDIS_PASSWORD}
-    database: ${REDIS_DATABASE:0}
-    connection-minimum-idle-size: ${REDIS_MIN_IDLE:20}
-    connection-pool-size: ${REDIS_POOL_SIZE:128}
-
+  redis:
+    database: ${REDIS_DATABASE:1}
+    password: ${REDIS_PASSWORD:Pass2010}
+    host: ${REDIS_HOST:192.168.50.8}
+    port: ${REDIS_PORT:6379}
+    lettuce.pool:
+      max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
+      max-wait: -1ms    # 连接池最大阻塞等待时间(使用负值表示没有限制)
+      max-idle: 10      # 连接池中的最大空闲连接
+      min-idle: 5       # 连接池中的最小空闲连接
 swagger:
   enabled: ${SWAGGER_ENABLED:false}
 

+ 9 - 7
product-web/src/main/resources/application-test.yml

@@ -10,14 +10,16 @@ spring:
       min-idle: ${DB_MIN_IDLE:10}
       max-active: ${DB_MAX_ACTIVE:50}
       max-wait: ${DB_MAX_WAIT:60000}
-
-redisson:
-  single-server-config:
-    address: redis://${REDIS_HOST:192.168.50.8}:${REDIS_PORT:6379}
-    password: ${REDIS_PASSWORD:Pass2010}
+  redis:
     database: ${REDIS_DATABASE:1}
-    connection-minimum-idle-size: ${REDIS_MIN_IDLE:10}
-    connection-pool-size: ${REDIS_POOL_SIZE:64}
+    password: ${REDIS_PASSWORD:Pass2010}
+    host: ${REDIS_HOST:192.168.50.8}
+    port: ${REDIS_PORT:6379}
+    lettuce.pool:
+      max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
+      max-wait: -1ms    # 连接池最大阻塞等待时间(使用负值表示没有限制)
+      max-idle: 10      # 连接池中的最大空闲连接
+      min-idle: 5       # 连接池中的最小空闲连接
 
 management:
   endpoints: