【发布时间】:2019-10-13 02:34:06
【问题描述】:
我是 Hazelcast 的新手。我正在尝试在我的 Spring Boot 应用程序中实现缓存。我用两个地图配置(CacheObject 和 CacheList)为 hazlecast 创建了一个配置类。我有两个方法 objectMethod() 返回单个员工对象和 listMethod() 返回员工对象列表。
我在 objectMethod 和 listMethod 上使用 @cacheable 注解。问题是只有对象缓存在工作,而列表缓存不工作。当我在调试模式下运行程序时,对象缓存在不进入方法的情况下返回值,但列表缓存始终执行方法并从数据库中获取值。
我是否缺少任何配置或其他任何内容?
我正在使用 Spring boot 版本 2.1.3.RELEASE、Hazelcast 版本 3.11.1 和 Hazelcast-spring 版本 3.11.1。
我尝试使用 spring actuator 缓存 url 来查看缓存,但我只看到 CacheObject 而不是 CacheList。
http://localhost:8080/actuator/caches
{"cacheManagers":{"cacheManager":{"caches":{"CacheObject":{"target":"com.hazelcast.map.impl.proxy.MapProxyImpl"}}}}}
配置类
@Configuration
public class HazelcastCacheConfig {
@Bean
public Config cacheConfig() {
return new Config().setInstanceName("hazelcast-instance")
.addMapConfig(new MapConfig().setName("CacheObject")
.setMaxSizeConfig(new MaxSizeConfig(100, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
.setEvictionPolicy(EvictionPolicy.LRU).setTimeToLiveSeconds(86400))
.addMapConfig(new MapConfig().setName("CacheList")
.setMaxSizeConfig(new MaxSizeConfig(100, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
.setEvictionPolicy(EvictionPolicy.LRU).setTimeToLiveSeconds(86400));
}
@cacheable 注释
@Cacheable(value="CacheList")
public List<Employee> getEmployeeList(String a, String b, String b){
//Query
return employeeList;
}
@Cacheable(value="CacheObject")
public Employee getEmployeeObject(String a, String b, String v) {
//Query
return employeeObject;
}
员工类
public class Employee implements Serializable{
private static final long serialVersionUID = 1L;
private string a,
private string b,
private string c,
private UUID d,
private Map<String,String> e;
}
【问题讨论】:
标签: spring-boot caching hazelcast