我有Crud方法可以修改缓存和数据库中的数据 当缓存和数据库发生更改后,我得到不相关的数据时,我还有一个方法可以返回所有实体。 据我了解,重点在于返回所有实体的方法。它使用默认密钥,它不同于其他方法。 我需要怎么做才能返回实际的数据表?
@Service
@CacheConfig(cacheNames = "configuration")
class ServiceConfiguration{
@Cacheable //this method returns non actual data
public List<MySomeConfiguration> getAllProxyConfigurations() {
return repository.getAllConfigurations();
}
@Cacheable(key = "#root.target.getConfigurationById(#id).serverId")
public MySomeConfiguration getConfigurationById(Long id) {
...
return configuration;
}
@CachePut(key = "#configuration.serverId", condition = "#result.id != null")
public MySomeConfiguration addOrUpdateConfiguration(Configuration configuration) {
return configuration;
}
@Cacheable(key = "#serverId")
public MySomeConfiguration getConfigurationByServerId(String serverId) {...
return configuration;
}
@CacheEvict(key = "#root.target.getConfigurationById(#id).serverId")
public void deleteConfigurationById(Long id) {
...
}
}//end class
p.s。抱歉,我的英语
答案 0 :(得分:0)
默认情况下,redis缓存管理器将StringRedisSerializer用于密钥序列化器
您的类toString()用于序列化对象的键,因此请不要为put,get,evicet等不同方法提供不同的键,但是依赖于您的toString()来获取键或使用Spring重写缓存自定义KeyGenerator
引用