|
|
|
|
@ -2,34 +2,37 @@ package cn.iocoder.yudao.framework.tenant.core.redis;
|
|
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
|
import org.springframework.cache.Cache;
|
|
|
|
|
import org.springframework.data.redis.cache.RedisCacheConfiguration;
|
|
|
|
|
import org.springframework.data.redis.cache.RedisCacheManager;
|
|
|
|
|
import org.springframework.data.redis.cache.RedisCacheWriter;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 租户缓存管理
|
|
|
|
|
* 多租户的 {@link RedisCacheManager} 实现类
|
|
|
|
|
*
|
|
|
|
|
* 为cacheName增加自动增加租户表示,格式:name+":"+tenantId
|
|
|
|
|
* 操作指定 name 的 {@link Cache} 时,自动拼接租户后缀,格式为 name + ":" + tenantId
|
|
|
|
|
*
|
|
|
|
|
* @author airhead
|
|
|
|
|
*/
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class TenantRedisCacheManager extends RedisCacheManager {
|
|
|
|
|
|
|
|
|
|
public TenantRedisCacheManager(
|
|
|
|
|
RedisCacheWriter cacheWriter, RedisCacheConfiguration defaultCacheConfiguration) {
|
|
|
|
|
super(cacheWriter, defaultCacheConfiguration);
|
|
|
|
|
}
|
|
|
|
|
public TenantRedisCacheManager(RedisCacheWriter cacheWriter,
|
|
|
|
|
RedisCacheConfiguration defaultCacheConfiguration) {
|
|
|
|
|
super(cacheWriter, defaultCacheConfiguration);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Cache getCache(@NotNull String name) {
|
|
|
|
|
// 如果开启多租户,则 name 拼接租户后缀
|
|
|
|
|
if (!TenantContextHolder.isIgnore()
|
|
|
|
|
&& TenantContextHolder.getTenantId() != null) {
|
|
|
|
|
name = name + ":" + TenantContextHolder.getTenantId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Cache getCache(String name) {
|
|
|
|
|
//租户未设置时,返回原始name
|
|
|
|
|
if (TenantContextHolder.getTenantId() == null) {
|
|
|
|
|
return super.getCache(name);
|
|
|
|
|
// 继续基于父方法
|
|
|
|
|
return super.getCache(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
name = name + ":" + TenantContextHolder.getTenantId();
|
|
|
|
|
return super.getCache(name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|