From b88d247351b4f6109a698597cd31a677f9b08276 Mon Sep 17 00:00:00 2001 From: orangej Date: Tue, 20 Jul 2021 14:14:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Aredis=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=A2=9E=E5=8A=A0globalKeyPrefix=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=A4=9A=E4=B8=AA=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=85=B1=E7=94=A8=E4=B8=80=E4=B8=AAredis=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=97=B6=E7=9A=84key=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cache/redis/JbootRedisCacheConfig.java | 13 ++++++++++- .../cache/redis/JbootRedisCacheImpl.java | 23 +++++++++++++++---- .../test/cache/redis/RedisCacheTester.java | 1 + 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheConfig.java b/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheConfig.java index b5d2cbc2..25913474 100644 --- a/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheConfig.java +++ b/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheConfig.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

- * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -25,5 +25,16 @@ import io.jboot.support.redis.JbootRedisConfig; @ConfigModel(prefix = "jboot.cache.redis") public class JbootRedisCacheConfig extends JbootRedisConfig { + /** + * 全局的key前缀,所有缓存的key都会自动添加该前缀 + */ + private String globalKeyPrefix; + public String getGlobalKeyPrefix() { + return globalKeyPrefix; + } + + public void setGlobalKeyPrefix(String globalKeyPrefix) { + this.globalKeyPrefix = globalKeyPrefix; + } } diff --git a/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java b/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java index f2985523..b5efbaba 100644 --- a/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java +++ b/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java @@ -22,6 +22,7 @@ import io.jboot.support.redis.JbootRedisManager; import io.jboot.components.cache.JbootCacheBase; import io.jboot.exception.JbootIllegalConfigException; import io.jboot.support.redis.RedisScanResult; +import io.jboot.utils.StrUtil; import java.util.*; @@ -30,13 +31,18 @@ public class JbootRedisCacheImpl extends JbootCacheBase { private JbootRedis redis; - private static final String redisCacheNamesKey = "jboot_cache_names"; + private JbootRedisCacheConfig cacheConfig; + private static String redisCacheNamesKey = "jboot_cache_names"; public JbootRedisCacheImpl() { - JbootRedisCacheConfig redisConfig = Jboot.config(JbootRedisCacheConfig.class); - if (redisConfig.isConfigOk()) { - redis = JbootRedisManager.me().getRedis(redisConfig); + cacheConfig = Jboot.config(JbootRedisCacheConfig.class); + if (StrUtil.isNotBlank(cacheConfig.getGlobalKeyPrefix())) { + redisCacheNamesKey = cacheConfig.getGlobalKeyPrefix() + ":" + redisCacheNamesKey; + } + + if (cacheConfig.isConfigOk()) { + redis = JbootRedisManager.me().getRedis(cacheConfig); } else { redis = Jboot.getRedis(); } @@ -119,7 +125,14 @@ public class JbootRedisCacheImpl extends JbootCacheBase { private String buildKey(String cacheName, Object key) { - StringBuilder keyBuilder = new StringBuilder(cacheName).append(":"); + StringBuilder keyBuilder = new StringBuilder(); + + if (StrUtil.isNotBlank(cacheConfig.getGlobalKeyPrefix())) { + keyBuilder.append(cacheConfig.getGlobalKeyPrefix()) + .append(":"); + } + + keyBuilder.append(cacheName).append(":"); if (key instanceof String) { keyBuilder.append("S"); } else if (key instanceof Number) { diff --git a/src/test/java/io/jboot/test/cache/redis/RedisCacheTester.java b/src/test/java/io/jboot/test/cache/redis/RedisCacheTester.java index aeb5068e..0b8b9dc3 100644 --- a/src/test/java/io/jboot/test/cache/redis/RedisCacheTester.java +++ b/src/test/java/io/jboot/test/cache/redis/RedisCacheTester.java @@ -15,6 +15,7 @@ public class RedisCacheTester { JbootApplication.setBootArg("jboot.cache.type", "redis"); JbootApplication.setBootArg("jboot.cache.redis.host", "127.0.0.1"); JbootApplication.setBootArg("jboot.cache.redis.port", "6379"); + JbootApplication.setBootArg("jboot.cache.redis.globalKeyPrefix", "myapp"); } @Test -- Gitee From 9ed85a0fc090d0eb3532feecc2778848660afef5 Mon Sep 17 00:00:00 2001 From: orangej Date: Tue, 20 Jul 2021 14:25:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E4=BF=9D?= =?UTF-8?q?=E5=AD=98globalKeyPrefix=EF=BC=8C=E4=BC=98=E5=8C=96buildKey?= =?UTF-8?q?=E5=AF=B9globalKeyPrefix=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/cache/redis/JbootRedisCacheImpl.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java b/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java index b5efbaba..6d4cbbb6 100644 --- a/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java +++ b/src/main/java/io/jboot/components/cache/redis/JbootRedisCacheImpl.java @@ -33,12 +33,14 @@ public class JbootRedisCacheImpl extends JbootCacheBase { private JbootRedis redis; private JbootRedisCacheConfig cacheConfig; private static String redisCacheNamesKey = "jboot_cache_names"; + private String globalKeyPrefix = ""; public JbootRedisCacheImpl() { cacheConfig = Jboot.config(JbootRedisCacheConfig.class); if (StrUtil.isNotBlank(cacheConfig.getGlobalKeyPrefix())) { - redisCacheNamesKey = cacheConfig.getGlobalKeyPrefix() + ":" + redisCacheNamesKey; + globalKeyPrefix = cacheConfig.getGlobalKeyPrefix() + ":"; + redisCacheNamesKey = globalKeyPrefix + redisCacheNamesKey; } if (cacheConfig.isConfigOk()) { @@ -125,14 +127,9 @@ public class JbootRedisCacheImpl extends JbootCacheBase { private String buildKey(String cacheName, Object key) { - StringBuilder keyBuilder = new StringBuilder(); + StringBuilder keyBuilder = new StringBuilder(globalKeyPrefix) + .append(cacheName).append(":"); - if (StrUtil.isNotBlank(cacheConfig.getGlobalKeyPrefix())) { - keyBuilder.append(cacheConfig.getGlobalKeyPrefix()) - .append(":"); - } - - keyBuilder.append(cacheName).append(":"); if (key instanceof String) { keyBuilder.append("S"); } else if (key instanceof Number) { -- Gitee