-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Comments
buildKey的目的就是为了把它转成字节数组,如果已经是byte[]或者String就没有必要转了。 你看看设置统一的keyPrefix能不能解决问题,如果不行就自己想办法改改吧。 |
目前我已经自己改了代码暂时解决这个问题,只是感觉自定义生成key这个场景应该挺多的,强烈建议keyPrefix开放一个接口出来,提供一个自定义生成的方案 |
😄 这个buildKey的确令人头大, 租户相关的prefix在key为string和byte[]的时候直接不走keyConveror了. 作者考虑加一个keyPrefix的接口吧, 现有的keyPrefix只能静态. 对于动态的prefix目前没有办法支持. |
提供一个接口,如果你提供的key convertor实现了这个接口,byte[]和String都走key convertor,否则就继续走以前的逻辑(和以前兼容),可以吗? |
我觉得可以,反正目的是需要能够自定义key就可以了。感谢作者大大 |
改了,接口就是KeyConvertor,以前这个接口只是放常量的。你们看看行不行,可以我就发个版本。 |
这个比想象的要复杂一点,因为RefreshCache在做自动刷新的时候会以byte[]为key来存取数据,并且它假定byte[]不会被转换(其实ExternalKeyUtil.buildKeyAfterConvert被调用了两次,把prefix加了两遍,但是不影响运行效果,不改了)。 所以我补了一个提交,可以先用2.7.3-SNAPSHOT试,没有问题的话过几天在发布版本。 |
你好,我的业务场景是这样的,我的多租户是在webSession中存了一个租户id,根据这个租户id来做数据隔离,缓存隔离等操作。并且用到了多级缓存,于是自定义写了一个KeyConvert,但是发现取本地缓存的时候无问题,但是如果取第二级也是就redis的时候有问题。
![image](https://user-images.githubusercontent.com/46333910/206839487-050f82cb-3e1d-4f99-9320-b30651a89f53.png)
![image](https://user-images.githubusercontent.com/46333910/206839509-8d66f45d-2e12-4c6e-be87-485297867339.png)
![image](https://user-images.githubusercontent.com/46333910/206839544-be76f939-1ea3-4f7b-af7e-25f4ea17c3b5.png)
建议将AbstractExternalCache的buildKey逻辑改为AbstractEmbeddedCache一致
The text was updated successfully, but these errors were encountered: