mirror of
https://github.com/continew-org/continew-starter.git
synced 2025-09-08 16:57:09 +08:00
feat(cache/redisson): 添加缓存键前缀支持
This commit is contained in:
@@ -33,6 +33,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import top.continew.starter.cache.redisson.handler.NameMapperHandler;
|
||||
import top.continew.starter.core.constant.PropertiesConstants;
|
||||
import top.continew.starter.core.constant.StringConstants;
|
||||
|
||||
@@ -104,6 +105,10 @@ public class RedissonAutoConfiguration {
|
||||
if (CharSequenceUtil.isBlank(clusterServersConfig.getPassword())) {
|
||||
clusterServersConfig.setPassword(redisProperties.getPassword());
|
||||
}
|
||||
// Key 前缀
|
||||
if (CharSequenceUtil.isNotBlank(properties.getKeyPrefix())) {
|
||||
clusterServersConfig.setNameMapper(new NameMapperHandler(properties.getKeyPrefix()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,6 +135,10 @@ public class RedissonAutoConfiguration {
|
||||
if (CharSequenceUtil.isBlank(sentinelServersConfig.getMasterName())) {
|
||||
sentinelServersConfig.setMasterName(redisProperties.getSentinel().getMaster());
|
||||
}
|
||||
// Key 前缀
|
||||
if (CharSequenceUtil.isNotBlank(properties.getKeyPrefix())) {
|
||||
sentinelServersConfig.setNameMapper(new NameMapperHandler(properties.getKeyPrefix()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -153,5 +162,9 @@ public class RedissonAutoConfiguration {
|
||||
singleServerConfig.setAddress(protocolPrefix + redisProperties
|
||||
.getHost() + StringConstants.COLON + redisProperties.getPort());
|
||||
}
|
||||
// Key 前缀
|
||||
if (CharSequenceUtil.isNotBlank(properties.getKeyPrefix())) {
|
||||
singleServerConfig.setNameMapper(new NameMapperHandler(properties.getKeyPrefix()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -37,6 +37,11 @@ public class RedissonProperties {
|
||||
*/
|
||||
private boolean enabled = true;
|
||||
|
||||
/**
|
||||
* 缓存键前缀
|
||||
*/
|
||||
private String keyPrefix;
|
||||
|
||||
/**
|
||||
* Redis 模式
|
||||
*/
|
||||
@@ -88,6 +93,14 @@ public class RedissonProperties {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
public String getKeyPrefix() {
|
||||
return keyPrefix;
|
||||
}
|
||||
|
||||
public void setKeyPrefix(String keyPrefix) {
|
||||
this.keyPrefix = keyPrefix;
|
||||
}
|
||||
|
||||
public Mode getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.continew.starter.cache.redisson.handler;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import org.redisson.api.NameMapper;
|
||||
|
||||
/**
|
||||
* 缓存名称映射处理器
|
||||
*
|
||||
* @author Charles7c
|
||||
* @since 2.11.0
|
||||
*/
|
||||
public class NameMapperHandler implements NameMapper {
|
||||
|
||||
private final String keyPrefix;
|
||||
|
||||
public NameMapperHandler(String keyPrefix) {
|
||||
this.keyPrefix = keyPrefix;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String map(String name) {
|
||||
if (CharSequenceUtil.isNotBlank(name) && !name.startsWith(keyPrefix)) {
|
||||
return keyPrefix + name;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unmap(String name) {
|
||||
if (CharSequenceUtil.isNotBlank(name) && name.startsWith(keyPrefix)) {
|
||||
return name.substring(keyPrefix.length());
|
||||
}
|
||||
return name;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user