好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

springboot hazelcast缓存中间件的实例代码

缓存 来了

在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

查看更多关于springboot hazelcast缓存中间件的实例代码的详细内容...

  阅读:43次