Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

多租户多级缓存下string类型key不走keyConvertor问题 #749

Open
pengliang0601 opened this issue Dec 10, 2022 · 7 comments
Open

Comments

@pengliang0601
Copy link

你好,我的业务场景是这样的,我的多租户是在webSession中存了一个租户id,根据这个租户id来做数据隔离,缓存隔离等操作。并且用到了多级缓存,于是自定义写了一个KeyConvert,但是发现取本地缓存的时候无问题,但是如果取第二级也是就redis的时候有问题。
image
image
image
建议将AbstractExternalCache的buildKey逻辑改为AbstractEmbeddedCache一致

@pengliang0601 pengliang0601 changed the title 多住户多级缓存下string类型key不走keyConvertor问题 多租户多级缓存下string类型key不走keyConvertor问题 Dec 10, 2022
@areyouok
Copy link
Collaborator

buildKey的目的就是为了把它转成字节数组,如果已经是byte[]或者String就没有必要转了。

你看看设置统一的keyPrefix能不能解决问题,如果不行就自己想办法改改吧。

@pengliang0601
Copy link
Author

buildKey的目的就是为了把它转成字节数组,如果已经是byte[]或者String就没有必要转了。

你看看设置统一的keyPrefix能不能解决问题,如果不行就自己想办法改改吧。

目前我已经自己改了代码暂时解决这个问题,只是感觉自定义生成key这个场景应该挺多的,强烈建议keyPrefix开放一个接口出来,提供一个自定义生成的方案

@xrayw
Copy link

xrayw commented Jan 4, 2023

😄 这个buildKey的确令人头大, 租户相关的prefix在key为string和byte[]的时候直接不走keyConveror了.

作者考虑加一个keyPrefix的接口吧, 现有的keyPrefix只能静态. 对于动态的prefix目前没有办法支持.

@areyouok
Copy link
Collaborator

areyouok commented Jan 5, 2023

提供一个接口,如果你提供的key convertor实现了这个接口,byte[]和String都走key convertor,否则就继续走以前的逻辑(和以前兼容),可以吗?

@pengliang0601
Copy link
Author

提供一个接口,如果你提供的key convertor实现了这个接口,byte[]和String都走key convertor,否则就继续走以前的逻辑(和以前兼容),可以吗?

我觉得可以,反正目的是需要能够自定义key就可以了。感谢作者大大

@areyouok
Copy link
Collaborator

areyouok commented Jan 5, 2023

改了,接口就是KeyConvertor,以前这个接口只是放常量的。你们看看行不行,可以我就发个版本。

6f0db39

@areyouok
Copy link
Collaborator

areyouok commented Jan 5, 2023

这个比想象的要复杂一点,因为RefreshCache在做自动刷新的时候会以byte[]为key来存取数据,并且它假定byte[]不会被转换(其实ExternalKeyUtil.buildKeyAfterConvert被调用了两次,把prefix加了两遍,但是不影响运行效果,不改了)。

所以我补了一个提交,可以先用2.7.3-SNAPSHOT试,没有问题的话过几天在发布版本。

00bcbb3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants