最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot和Hazelcast使用詳解

 更新時間:2018年09月07日 08:25:34   作者:banq  
這篇文章主要介紹了Spring Boot和Hazelcast使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

你是否遇到過應用程序性能下降的問題?有沒有想過提升Spring性能?如果是這樣 - 那么這篇文章絕對適合你。在這里,我們將談論使用超級強大和領先的內存數(shù)據(jù)網(wǎng)格提高應用程序的性能!

什么是Hazelcast?

Hazelcast是一個內存分布式計算平臺,用于管理數(shù)據(jù)并并行執(zhí)行執(zhí)行應用程序。

1. 它是用Java編寫的。
2. 與其他一些內存數(shù)據(jù)庫(如redis)不同,Hazelcast是多線程的,這意味著可從所有可用的CPU內核中受益。
3. 與其他內存數(shù)據(jù)網(wǎng)格不同 - 它設計用于分布式環(huán)境。它支持每個群集無限數(shù)量的map和緩存。

根據(jù)基準測試,Hazelcast在獲取數(shù)據(jù)方面比Redis快56%,在設置數(shù)據(jù)方面比Redis快44%。

Hazelcast是一個高度可擴展的數(shù)據(jù)分發(fā)和集群平臺。特性包括:

  1. 提供java.util.{Queue, Set, List, Map}分布式實現(xiàn)。
  2. 提供java.util.concurrency.locks.Lock分布式實現(xiàn)。
  3. 提供java.util.concurrent.ExecutorService分布式實現(xiàn)。
  4. 提供用于一對多關系的分布式MultiMap。
  5. 提供用于發(fā)布/訂閱的分布式Topic(主題)。
  6. 通過JCA與J2EE容器集成和事務支持。
  7. 提供用于安全集群的Socket層加密。
  8. 支持同步和異步持久化。
  9. 為Hibernate提供二級緩存Provider 。
  10. 通過JMX監(jiān)控和管理集群。
  11. 支持動態(tài)HTTP Session集群。
  12. 利用備份實現(xiàn)動態(tài)分割。
  13. 支持動態(tài)故障恢復。

現(xiàn)在需要將它添加到Spring Boot項目中并開始使用它的優(yōu)勢。

<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. 通過創(chuàng)建hazelcast.xml配置文件。

我們選擇第一個方式:

import 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(新MaxSizeConfig(200,MaxSizeConfig.MaxSizePolicy。FREE_HEAP_SIZE))
                .setEvictionPolicy(EvictionPolicy。LRU)
.setTimeToLiveSeconds(-1)); 
    return config; 
  } 
}

實例已配置 - 現(xiàn)在我們可以訪問Hazelcast并使用數(shù)據(jù)進行操作。

對于這個例子,將創(chuàng)建只有3個映射的HazelcastController:

  • 一個是設置數(shù)據(jù);
  • 一種是按ke鍵查詢數(shù)據(jù);
  • 一個是從Hazelcast獲取所有數(shù)據(jù);
@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庫提供的接口。通過使用此實例,我們可以操作內存數(shù)據(jù)網(wǎng)格中的數(shù)據(jù)。因此,可以使用Postman將一些記錄保存到Hazelcast中。

重要的是 - 即使從不同的SpringBoot應用程序實例啟動,也可以將數(shù)據(jù)存儲在同一個緩存中。比如可以將應用程序端口更改為8081,并運行該應用程序的另一個實例,然后將嘗試從之前存儲的Hazelcast中獲取所有數(shù)據(jù)。

因為Hazelcast是集群的,數(shù)據(jù)可以在許多應用程序實例之間共享。

源碼:Github

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java?ArrayList的深拷貝與淺拷貝問題

    java?ArrayList的深拷貝與淺拷貝問題

    這篇文章主要介紹了java?ArrayList的深拷貝與淺拷貝問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java游戲開發(fā)之俄羅斯方塊的實現(xiàn)

    Java游戲開發(fā)之俄羅斯方塊的實現(xiàn)

    俄羅斯方塊是一個最初由阿列克謝帕吉特諾夫在蘇聯(lián)設計和編程的益智類視頻游戲。本文和大家分享了利用Java語言實現(xiàn)這一經(jīng)典的小游戲的示例代碼,需要的可以參考一下
    2022-05-05
  • nacos服務注冊命名空間指定方式

    nacos服務注冊命名空間指定方式

    文章介紹了Nacos服務注冊命名空間的用途,以及如何創(chuàng)建和指定命名空間,命名空間用于隔離不同項目的服務和配置,避免沖突,通過在配置文件中指定命名空間ID,服務會注冊到相應的命名空間中,這樣可以更好地管理不同環(huán)境下的配置文件
    2024-12-12
  • Java程序順序結構中邏輯控制語句詳解流程

    Java程序順序結構中邏輯控制語句詳解流程

    在程序開發(fā)的過程之中一共會存在有三種程序邏輯:順序結構、分支結構、循環(huán)結構,對于之前所編寫的代碼大部分都是順序結構的定義,即:所有的程序將按照定義的代碼順序依次執(zhí)行
    2021-10-10
  • CentOS 7系統(tǒng)下配置自定義JDK的教程

    CentOS 7系統(tǒng)下配置自定義JDK的教程

    這篇文章主要給大家介紹了在CentOS 7系統(tǒng)下配置自定義JDK的教程,文中將配置的方法教程介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Spring MVC   文件、cookies的接收 與REST響應詳解

    Spring MVC   文件、cookies的接收 與REST響應詳

    在SpringMVC中,使用@RequestPart注解可接收文件并處理多部分請求,同時可以通過@CookieValue和HttpServletResponse來獲取和設置Cookies,本文介紹Spring MVC   文件、cookies的接收 與REST響應,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • SpringBoot Jpa 自定義查詢實現(xiàn)代碼詳解

    SpringBoot Jpa 自定義查詢實現(xiàn)代碼詳解

    這篇文章主要介紹了SpringBoot Jpa 自定義查詢實現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java緩存池代碼實例詳解

    Java緩存池代碼實例詳解

    本篇文章主要介紹了Java實現(xiàn)簡單的緩存方法實例,需要的朋友可以參考下
    2017-04-04
  • 微信支付java版V3驗證數(shù)據(jù)合法性(Deom)

    微信支付java版V3驗證數(shù)據(jù)合法性(Deom)

    這篇文章主要介紹了微信支付java版V3驗證數(shù)據(jù)合法性(Deom)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • 詳解Java冒泡排序

    詳解Java冒泡排序

    本篇文章通過代碼實例給大家詳細分析了Java冒泡排序的原理,有興趣的朋友可以學習下。
    2018-02-02

最新評論

分宜县| 和平县| 鹰潭市| 芜湖县| 清新县| 汾阳市| 绵竹市| 徐闻县| 延寿县| 莒南县| 昌乐县| 台东市| 延庆县| 重庆市| 方山县| 西畴县| 青海省| 鄯善县| 壶关县| 盐城市| 汕头市| 洞头县| 辛集市| 得荣县| 甘德县| 普陀区| 拉萨市| 印江| 阿图什市| 安塞县| 普洱| 赤峰市| 如皋市| 手游| 北宁市| 漳平市| 张家川| 宝清县| 安泽县| 南城县| 珲春市|