还有@CacheUpdate与@CacheInvalidate注解,其他节点在收到消息后,会更新/删除远程redis缓存吗
arknldoa1#
CacheRefresh是定期后台刷新,以免缓存过期的时候去数据库加载响应太慢。如果Cache类型是Remote或Both,有一个简单的分布式锁,只有一个机器会去执行刷新(以免给数据库造成压力)。如果是Both,其它(没抢到锁的)机器定期执行的时候会使用redis里面的数据替换本地cache的数据。这里没有通知机制。
Cache更新的时候,将其它机器的本地Cache失效,这个是2.7才支持的可选功能,只针对Both类型有效,默认没有开。打开需要设置(比如在yml中)broadcastChannel,并在Cached注解(手工构造时在QuickConfig类)上面设置syncLocal = true。
1条答案
按热度按时间arknldoa1#
CacheRefresh是定期后台刷新,以免缓存过期的时候去数据库加载响应太慢。如果Cache类型是Remote或Both,有一个简单的分布式锁,只有一个机器会去执行刷新(以免给数据库造成压力)。如果是Both,其它(没抢到锁的)机器定期执行的时候会使用redis里面的数据替换本地cache的数据。这里没有通知机制。
Cache更新的时候,将其它机器的本地Cache失效,这个是2.7才支持的可选功能,只针对Both类型有效,默认没有开。打开需要设置(比如在yml中)broadcastChannel,并在Cached注解(手工构造时在QuickConfig类)上面设置syncLocal = true。