From cc8e103aed0cdaf681d813f7601a38d2dd134289 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期五, 11 八月 2023 00:22:17 +0800
Subject: [PATCH] 优化费用

---
 java110-core/src/main/java/com/java110/core/cache/Java110RedisConfig.java |   90 +++++++++++++++++++++++++++++++++++----------
 1 files changed, 70 insertions(+), 20 deletions(-)

diff --git a/java110-core/src/main/java/com/java110/core/cache/Java110RedisConfig.java b/java110-core/src/main/java/com/java110/core/cache/Java110RedisConfig.java
index c73a0a1..b2ff2ab 100755
--- a/java110-core/src/main/java/com/java110/core/cache/Java110RedisConfig.java
+++ b/java110-core/src/main/java/com/java110/core/cache/Java110RedisConfig.java
@@ -12,20 +12,24 @@
 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.GenericJackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializationContext;
+import org.springframework.data.redis.serializer.*;
+
 import org.springframework.util.StringUtils;
+import redis.clients.jedis.HostAndPort;
+import redis.clients.jedis.JedisCluster;
 import redis.clients.jedis.JedisPool;
 import redis.clients.jedis.JedisPoolConfig;
 
 import java.time.Duration;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * Created by wuxw on 2017/7/23.
  */
 @Configuration
 @EnableCaching
-public class Java110RedisConfig extends CachingConfigurerSupport  {
+public class Java110RedisConfig extends CachingConfigurerSupport {
 
     public final static String REDIS_EXPIRE_TIME_KEY = "#key_expire_time";
 
@@ -36,37 +40,77 @@
     @Autowired
     private RedisTemplate redisTemplate;
 
-    @Bean(name= "jedisPool")
-    @Autowired
+    @Bean
+    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
+        redisTemplate.setConnectionFactory(factory);
+        redisTemplate.setKeySerializer(new StringRedisSerializer()); // key鐨勫簭鍒楀寲绫诲瀷
+        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); // value鐨勫簭鍒楀寲绫诲瀷
+        redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
+
+    //@Bean(name = "jedisPool")
+    //@Autowired
     public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config,
-                               @Value("${jedis.pool.host}")String host,
-                               @Value("${jedis.pool.port}")int port,
-                               @Value("${jedis.pool.timeout}")int timeout,
+                               @Value("${jedis.pool.host}") String host,
+                               @Value("${jedis.pool.port}") int port,
+                               @Value("${jedis.pool.timeout}") int timeout,
                                @Value("${jedis.pool.password}") String password) {
         //娌℃湁閰嶇疆鏀逛负榛樿鍊�
-        if(timeout == 0){
+        if (timeout == 0) {
             timeout = 2000;
         }
 
-        if(StringUtils.isEmpty(password)) {
-            return new JedisPool(config, host, port,timeout);
-        }else{
-            return new JedisPool(config,host,port,timeout,password);
+        if (StringUtils.isEmpty(password)) {
+            return new JedisPool(config, host, port, timeout);
+        } else {
+            return new JedisPool(config, host, port, timeout, password);
         }
     }
 
-    @Bean(name= "jedis.pool.config")
-    public JedisPoolConfig jedisPoolConfig (@Value("${jedis.pool.config.maxTotal}")int maxTotal,
-                                            @Value("${jedis.pool.config.maxIdle}")int maxIdle,
-                                            @Value("${jedis.pool.config.maxWaitMillis}")int maxWaitMillis) {
+
+    //    @Bean(name = "jedisCluster")
+//    @Autowired
+    public JedisCluster jedisCluster(@Qualifier("jedis.pool.config") JedisPoolConfig config,
+                                     @Value("${jedis.pool.host}") String host,
+                                     @Value("${jedis.pool.port}") int port,
+                                     @Value("${jedis.pool.timeout}") int timeout,
+                                     @Value("${jedis.pool.password}") String password) {
+        //娌℃湁閰嶇疆鏀逛负榛樿鍊�
+        if (timeout == 0) {
+            timeout = 2000;
+        }
+        String[] hosts = host.split(",");
+        Set<HostAndPort> nodes = new HashSet<>();
+        String[] tmpHosts = null;
+        for (String tmpHost : hosts) {
+            tmpHosts = tmpHost.split(":");
+            nodes.add(new HostAndPort(tmpHosts[0], Integer.parseInt(tmpHosts[1])));
+        }
+        JedisCluster cluster = new JedisCluster(nodes);
+        return cluster;
+    }
+
+    //@Bean(name = "jedis.pool.config")
+    public JedisPoolConfig jedisPoolConfig(@Value("${jedis.pool.config.maxTotal}") int maxTotal,
+                                           @Value("${jedis.pool.config.maxIdle}") int maxIdle,
+                                           @Value("${jedis.pool.config.maxWaitMillis}") int maxWaitMillis) {
         JedisPoolConfig config = new JedisPoolConfig();
         config.setMaxTotal(maxTotal);
         config.setMaxIdle(maxIdle);
         config.setMaxWaitMillis(maxWaitMillis);
 
+
         return config;
     }
 
+    @Bean
+    public RedisSerializer<String> redisKeySerializer(){
+        return new StringRedisSerializer();
+    }
 
 
     @Override
@@ -84,14 +128,20 @@
         return cm;
     }
 
+    /**
+     * @return
+     * @Cacheable鍜岄�氳繃RedisTemplate涔嬮棿鍘荤浉浜掕幏鍙栨暟鎹�
+     * @Cacheable娉ㄨВ瀛樺偍redis缂撳瓨鏁版嵁鍜岄�氳繃RedisTemplate鍘昏幏鍙栧瓨鍌ㄧ殑鏁版嵁锛岀敱浜嶡Cacheable榛樿鐨勫簭鍒楀寲缂栫爜瀛樺偍鍒版暟鎹负byte绫诲瀷锛岃�孯edisTemplate鐨勯粯璁ょ紪鐮佷负JdkSerializationRedisSerializer锛屾墍浠ヨ閫氳繃璁剧疆鍚屼竴涓簭鍒楀寲鏂瑰紡鍘昏В鍐抽棶棰橈紱 閫氳繃缁ф壙CachingConfigurerSupport骞朵笖寮�鍚疈EnableCaching鍘昏缃甤ache鐨勯厤缃�氳繃RedisCacheConfiguration.defaultCacheConfig()鍘昏缃簭鍒楀寲鐨勬柟寮廟edisTemplate<String, Object>璁剧疆RedisTemplate鐨勫簭鍒楀寲鏂瑰紡
+     * 璁剧疆搴忓垪鍖栨柟寮廕ackson2JsonRedisSerializer
+     */
     @Bean
     public RedisCacheConfiguration redisCacheConfiguration() {
 
         RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig();
-
-        configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())).entryTtl(Duration.ofSeconds(30));
-
+        configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new JdkSerializationRedisSerializer())).entryTtl(Duration.ofSeconds(30));
         return configuration;
+
+
     }
 
 

--
Gitblit v1.8.0