|
@@ -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);
|
|
|
- }
|
|
|
}
|