上文 Spring boot2.7整合jetcache方法缓存 我们做了个方法缓存的案例

可以将接口内容缓存起来 是能大大提高效率的 但是 我们接口的数据大多来自数据库 如果我们调用增删查改 它的数据变化了
那缓存的内容就会因为没有及时更新变的不准确

例如 我们这样
Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作-LMLPHP
我们在上面 定义了 一个 book对象 并给对应的 id和name字段赋值

get请求 getMin 返回 book对象 接口方法 绑定了缓存

而 post请求 setBook 接受一个 book对象 然后 改变原本的book对象

我们来测试运行效果

我们调用 get请求 一切正常
Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作-LMLPHP
然后 我们调用 post请求 修改调book的数据
Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作-LMLPHP
重新请求get

但因为缓存的存在 返回结果 依旧是 第一次的结果
Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作-LMLPHP
因为 返回结果实际是重 缓存取的

我们导个包

import com.alicp.jetcache.anno.CacheUpdate;

然后 在更新的函数中这样写

@CacheUpdate(name="book",key="1",value="#bindata")

我们要更新的缓存 name 叫 book的缓存 如果 你有id为key 就可以加上key参数
例如

@CacheUpdate(name="book", key="#id", value="#BinData")

Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作-LMLPHP
然后 value 告诉它 我们要用 参数中的 BinData 替换缓存结果

因为 这个操作 一定要通过key去改 所以 我就还是加上了一个key给get
然后 我们重写启动项目

重复之前的操作
这次 查询就可以获取更新了
Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作-LMLPHP
导包

import com.alicp.jetcache.anno.CacheInvalidate;

方法头上加上

@CacheInvalidate(name="book",key = "1")

Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作-LMLPHP
就是 通过 key和name 删除指定缓存

03-21 12:39