缓存来了
在dotnet平台有自己的缓存框架,在java springboot里当然了集成了很多,而且缓存的中间件也可以进行多种选择,向 redis , hazelcast 都是分布式的缓存中间件,今天主要说一下后者的实现。
添加依赖包
1
2
3
4
5
6
7
|
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统一配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
@configuration @profile ( "hazelcast-cache" ) //运行环境名称 public class hazelcastcacheconfig { @bean public config hazelcastconfig() { config config = new config(); config.setinstancename( "hazelcast-cache" ); mapconfig alluserscache = new mapconfig(); alluserscache.settimetoliveseconds( 3600 ); alluserscache.setevictionpolicy(evictionpolicy.lfu); config.getmapconfigs().put( "alluserscache" , alluserscache); mapconfig usercache = new mapconfig(); usercache.settimetoliveseconds( 3600 ); //超时时间为1小时 usercache.setevictionpolicy(evictionpolicy.lfu); config.getmapconfigs().put( "usercache" , usercache); //usercache为缓存的cachename return config; } } |
添加仓储
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public interface userrepository { list<userinfo> fetchallusers(); list<userinfo> fetchallusers(string name); } @repository @profile ( "hazelcast-cache" ) // 指定在这个hazelcast-cache环境下,userrepository的实例才是userinforepositoryhazelcast public class userinforepositoryhazelcast implements userrepository { @override @cacheable (cachenames = "usercache" , key = "#root.methodname" ) // 无参的方法,方法名作为key public list<userinfo> fetchallusers(){ list<userinfo> list = new arraylist<>(); list.add(userinfo.builder().phone( "135" ).username( "zzl1" ).createat(localdatetime.now()).build()); list.add(userinfo.builder().phone( "136" ).username( "zzl2" ).createat(localdatetime.now()).build()); return list; } @override @cacheable (cachenames = "usercache" , key = "{#name}" ) // 方法名和参数组合做为key public list<userinfo> fetchallusers(string name) { list<userinfo> list = new arraylist<>(); list.add(userinfo.builder().phone( "135" ).username( "zzl1" ).createat(localdatetime.now()).build()); list.add(userinfo.builder().phone( "136" ).username( "zzl2" ).createat(localdatetime.now()).build()); return list; } } |
配置profile
application.yml开启这个缓存的环境
profiles.active: hazelcast-cache
运行程序
可以在单元测试里进行测试,调用多次,方法体只进入一次,这就是缓存成功了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@activeprofiles ( "hazelcast-cache" ) public class usercontrollertest extends basecontrollertest { @test public void fetchusers() { getok(); //test caching getok(); } private webtestclient.responsespec getok() { return http.get() .uri( "/users/all/zzl" ) .exchange() .expectstatus().isok(); } } |
总结
以上所述是小编给大家介绍的springboot hazelcast缓存中间件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/lori/p/9518892.html