jetcache 如何在不改动注解的情况下,实现使用堆内缓存和堆外缓存的切换

kulphzqa  于 4个月前  发布在  其他
关注(0)|答案(5)|浏览(67)

我这边需求是这样的,比如我一个系统 目前还很小,我这边日常缓存使用caffiene就行,所以cachetype就是local,随着业务增大,对服务进行了负载 这时候我就想缓存使用堆外缓存比如redis, 这时候我要需要把所有的cachetype改为remote 这样会比较麻烦,有没有一个type 根据我配置的缓存是redis还是caffiene 然后注解不用改变就可以切换缓存实现, BOTH模式也不是我需要的 因为BOTH会使用一二级缓存, 对于负载下的应用 数据库更改了配置 可能带来不同服务缓存不一致问题

mefy6pfw

mefy6pfw1#

local和remote有行为上的不一样,比如remote保存的value必须要能序列化,不是你光改一下type就可以的。

你这个需求可以用MockRemoteCache,yml里面remote的type填mock就可以,没有别的配置。它就放在内存里面,但是真的会执行一遍序列化,这样你将来换成redis也不会有问题。

BOTH的cache数据不一致的问题有两个办法。第一是把local的超时时间设置短一点(可以分别设置);第二是2.7以后通过jetcache更新的redis缓存数据支持通知到其它进程,失效local cache。

t2a7ltrp

t2a7ltrp2#

local和remote有行为上的不一样,比如remote保存的value必须要能序列化,不是你光改一下type就可以的。

你这个需求可以用MockRemoteCache,yml里面remote的type填mock就可以,没有别的配置。它就放在内存里面,但是真的会执行一遍序列化,这样你将来换成redis也不会有问题。

BOTH的cache数据不一致的问题有两个办法。第一是把local的超时时间设置短一点(可以分别设置);第二是2.7以后通过jetcache更新的redis缓存数据支持通知到其它进程,失效local cache。

如果我value都是可以序列化的场景, 可以根据自定义配置 任意切换使用local,remote,both吗, 如果注解不好实现, 是不是用api也可以 。我在api应该可以配置所有缓存使用remote 还是 local 还是 both吧。

nnt7mjpx

nnt7mjpx3#

不能,Cache实例创建的时候,它的类型就是固定的。

dluptydi

dluptydi4#

不能,Cache实例创建的时候,它的类型就是固定的。

好的 我还有一个问题 如果我不想使用remote 只想使用local 或者 只想使用remote 不想使用local 这种非springboot如何配置》? 我local用的caffeine

nnt7mjpx

nnt7mjpx5#

remote你填个mock就可以了,将来不是可以统一换成redis么。mock remote或者local,你不用配置一下也没有什么损失

相关问题