Lazy loaded image
技术分享
👹多租户系统redis 缓存
00 分钟
2019-12-2
2024-12-5
type
status
date
slug
summary
tags
category
icon
password

多租户系统用@Cacheable做接口缓存,为了避免缓存数据混乱,需要做缓存数据的租户隔离。

缓存过程源码分析:

  • EnableCaching注解 EnableCaching中引入了@Import({CachingConfigurationSelector.class})
    • notion image
  • 2.CachingConfigurationSelector
    • notion image
      getProxyImports方法中设置了ProxyCachingConfiguration 代理配置类
  • CacheInterceptor ProxyCachingConfiguration中配置了缓存拦截器CacheInterceptor类
    • notion image
  • 4.CacheAspectSupport 打开CacheInterceptor的父类CacheAspectSupport。 ProxyCachingConfiguration中调用的configure方法设置了缓存处理器 SimpleCacheResolver。
    • notion image
  • 5.获取缓存 key getCacheNames方法
    • notion image

修改思路

修改getCacheNames方法,添加租户id作为前缀
现在直接复制源码做了修改,所有要修改的类添加统一前缀
notion image
notion image

关键地方记录:

notion image
notion image

后续

notion image
改完才发现,直接在RedisCacheConfigutation类中定义一个CacheResolver 的bean应该也是可以的。暂时先不改了。
 
上一篇
Kubernetes 问题处理记录
下一篇
flowable获取下一步会创建的用户任务

评论
Loading...