前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot和Hazelcast使用

Spring Boot和Hazelcast使用

作者头像
lyb-geek
发布2018-09-27 09:53:21
2.7K0
发布2018-09-27 09:53:21
举报
文章被收录于专栏:Linyb极客之路Linyb极客之路
你是否遇到过应用程序性能下降的问题?有没有想过提升Spring性能?如果是这样 - 那么这篇文章绝对适合你。在这里,我们将谈论使用超级强大和领先的内存数据网格提高应用程序的性能! 什么是Hazelcast? Hazelcast是一个内存分布式计算平台,用于管理数据并并行执行执行应用程序。 1. 它是用Java编写的。 2. 与其他一些内存数据库(如redis)不同,Hazelcast是多线程的,这意味着可从所有可用的CPU内核中受益。 3. 与其他内存数据网格不同 - 它设计用于分布式环境。它支持每个群集无限数量的map和缓存。 根据基准测试,Hazelcast在获取数据方面比Redis快56%,在设置数据方面比Redis快44%。 现在需要将它添加到Spring Boot项目中并开始使用它的优势。
代码语言:javascript
复制
<parent> 
    <groupId> org.springframework.boot </ groupId> 
    <artifactId> spring-boot-starter-parent </ artifactId> 
    <version> 2.0.0.RELEASE </ version> 
</ parent> 
<dependencies> 
    <dependency > 
        <groupId> org.springframework.boot </ groupId> 
        <artifactId> spring-boot-starter-web </ artifactId> 
    </ dependency> 
    <dependency> 
        <groupId> com.hazelcast </ groupId> 
        <artifactId> hazelcast </ artifactId> 
    </ dependency> 
    <dependency> 
        <groupId> com.hazelcast </ groupId> 
        <artifactId> hazelcast-spring </ artifactId> 
    </ dependency> 
</ dependencies>

要将Hazelcast添加到Spring Boot应用程序,只需要两个依赖项。下我们需要配置Hazelcast实例。有两种方法可以做到这一点: 1. 通过Java配置。 2. 通过创建hazelcast.xml配置文件。 我们选择第一个方式:

代码语言:javascript
复制
com.hazelcast.config.Config; 
import com.hazelcast.config.EvictionPolicy; 
import com.hazelcast.config.MapConfig; 
import com.hazelcast.config.MaxSizeConfig; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 

@Configuration 
public class HazelcastConfiguration { 
    @Bean 
    public Config hazelCastConfig(){ 
        Config config = new Config(); 
        config.setInstanceName(“hazelcast-instance”)。
                addMapConfig(
                        new MapConfig()。
                                setName(“configuration”)
                                .setMaxSizeConfig(new MaxSizeConfig(200,MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
                                .setEvictionPolicy(EvictionPolicy.LRU)
.setTimeToLiveSeconds(-1)); 
        return config; 
    } 
}

实例已配置 - 现在我们可以访问Hazelcast并使用数据进行操作。 对于这个例子,将创建只有3个映射的HazelcastController: 一个是设置数据; 一种是按ke键查询数据; 一个是从Hazelcast获取所有数据;

代码语言:javascript
复制
@RestController
@RequestMapping("/hazelcast")
public class HazelcastController {

    private final Logger logger = LoggerFactory.getLogger(HazelcastController.class);
    private final HazelcastInstance hazelcastInstance;

    @Autowired
    HazelcastController(HazelcastInstance hazelcastInstance) {
        this.hazelcastInstance = hazelcastInstance;
    }

    @PostMapping(value = "/write-data")
    public String writeDataToHazelcast(@RequestParam String key, @RequestParam String value) {
        Map<String, String> hazelcastMap = hazelcastInstance.getMap("my-map");
        hazelcastMap.put(key, value);
        return "Data is stored.";
    }

    @GetMapping(value = "/read-data")
    public String readDataFromHazelcast(@RequestParam String key) {
        Map<String, String> hazelcastMap = hazelcastInstance.getMap("my-map");
        return hazelcastMap.get(key);
    }

    @GetMapping(value = "/read-all-data")
    public Map<String, String> readAllDataFromHazelcast() {
        Map<String, String> hazelcastMap = hazelcastInstance.getMap("my-map");
        return hazelcastInstance.getMap("my-map");
    }

}

在控制器中,我们自动安装了HazelcastInstance  - 这是Hazelcast库提供的接口。通过使用此实例,我们可以操作内存数据网格中的数据。因此,可以使用Postman将一些记录保存到Hazelcast中。 重要的是 - 即使从不同的SpringBoot应用程序实例启动,也可以将数据存储在同一个缓存中。比如可以将应用程序端口更改为8081,并运行该应用程序的另一个实例,然后将尝试从之前存储的Hazelcast中获取所有数据。 因为Hazelcast是集群的,数据可以在许多应用程序实例之间共享。

源码:

https://github.com/igorkosandyak/spring-boot-with-hazelcast

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源码:
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档