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(); List fetchAllUsers(Stringname); } @Repository @Profile("hazelcast-cache")//指定在这个hazelcast-cache环境下,UserRepository的实例才是UserInfoRepositoryHazelcast publicclassUserInfoRepositoryHazelcastimplementsUserRepository{ @Override @Cacheable(cacheNames="usercache",key="#root.methodName")//无参的方法,方法名作为key publicList fetchAllUsers(){ List list=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 publicList fetchAllUsers(Stringname){ List list=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缓存中间件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!