springboot hazelcast缓存中间件的实例代码
缓存来了
在dotnet平台有自己的缓存框架,在javaspringboot里当然了集成了很多,而且缓存的中间件也可以进行多种选择,向redis,hazelcast都是分布式的缓存中间件,今天主要说一下后者的实现。
添加依赖包
dependencies{
compile("org.springframework.boot:spring-boot-starter-cache")
compile("com.hazelcast:hazelcast:3.7.4")
compile("com.hazelcast:hazelcast-spring:3.7.4")
}
bootRun{systemProperty"spring.profiles.active","hazelcast-cache"
}
config统一配置
@Configuration
@Profile("hazelcast-cache")//运行环境名称
publicclassHazelcastCacheConfig{
@Bean
publicConfighazelCastConfig(){
Configconfig=newConfig();
config.setInstanceName("hazelcast-cache");
MapConfigallUsersCache=newMapConfig();
allUsersCache.setTimeToLiveSeconds(3600);
allUsersCache.setEvictionPolicy(EvictionPolicy.LFU);
config.getMapConfigs().put("alluserscache",allUsersCache);
MapConfigusercache=newMapConfig();
usercache.setTimeToLiveSeconds(3600);//超时时间为1小时
usercache.setEvictionPolicy(EvictionPolicy.LFU);
config.getMapConfigs().put("usercache",usercache);//usercache为缓存的cachename
returnconfig;
}
}
添加仓储
publicinterfaceUserRepository{
ListfetchAllUsers();
ListfetchAllUsers(Stringname);
}
@Repository
@Profile("hazelcast-cache")//指定在这个hazelcast-cache环境下,UserRepository的实例才是UserInfoRepositoryHazelcast
publicclassUserInfoRepositoryHazelcastimplementsUserRepository{
@Override
@Cacheable(cacheNames="usercache",key="#root.methodName")//无参的方法,方法名作为key
publicListfetchAllUsers(){
Listlist=newArrayList<>();
list.add(UserInfo.builder().phone("135").userName("zzl1").createAt(LocalDateTime.now()).build());
list.add(UserInfo.builder().phone("136").userName("zzl2").createAt(LocalDateTime.now()).build());
returnlist;
}
@Override
@Cacheable(cacheNames="usercache",key="{#name}")//方法名和参数组合做为key
publicListfetchAllUsers(Stringname){
Listlist=newArrayList<>();
list.add(UserInfo.builder().phone("135").userName("zzl1").createAt(LocalDateTime.now()).build());
list.add(UserInfo.builder().phone("136").userName("zzl2").createAt(LocalDateTime.now()).build());
returnlist;
}
}
配置profile
application.yml开启这个缓存的环境
profiles.active:hazelcast-cache
运行程序
可以在单元测试里进行测试,调用多次,方法体只进入一次,这就是缓存成功了。
@ActiveProfiles("hazelcast-cache")
publicclassUserControllerTestextendsBaseControllerTest{
@Test
publicvoidfetchUsers(){
getOk();
//testcaching
getOk();
}
privateWebTestClient.ResponseSpecgetOk(){
returnhttp.get()
.uri("/users/all/zzl")
.exchange()
.expectStatus().isOk();
}
}
总结
以上所述是小编给大家介绍的springboothazelcast缓存中间件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!