HazelCast的Spring-Boot和Cache抽象

以前,我们是使用spring提供的默认Cache Manager来开始Spring Cache抽象的。

尽管这种方法可能适合我们对简单应用程序的需求,但是在出现复杂问题的情况下,我们需要使用具有更多功能的其他工具。 Hazelcast就是其中之一。 当涉及到基于JVM的应用程序时,Hazelcast是一个很好的缓存工具。 通过使用hazelcast作为缓存,数据可以在计算机群集的节点之间平均分配,从而可以对可用存储进行水平扩展。

我们将使用spring配置文件运行代码库,因此“ hazelcast-cache”将是我们的配置文件名称。

group 'com.gkatzioura'
version '1.0-SNAPSHOT'buildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.2.RELEASE")}
}apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'repositories {mavenCentral()
}sourceCompatibility = 1.8
targetCompatibility = 1.8dependencies {compile("org.springframework.boot:spring-boot-starter-web")compile("org.springframework.boot:spring-boot-starter-cache")compile("org.springframework.boot:spring-boot-starter")compile("com.hazelcast:hazelcast:3.7.4")compile("com.hazelcast:hazelcast-spring:3.7.4")testCompile("junit:junit")
}bootRun {systemProperty "spring.profiles.active", "hazelcast-cache"
}

如您所见,我们更新了上一个示例中的gradle文件,并添加了两个额外的依赖项hazelcast和hazelcast-spring。 此外,我们还更改了应用程序默认运行的配置文件。

我们的下一步是配置hazelcast缓存管理器。

package com.gkatzioura.caching.config;import com.hazelcast.config.Config;
import com.hazelcast.config.EvictionPolicy;
import com.hazelcast.config.MapConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;/*** Created by gkatzioura on 1/10/17.*/
@Configuration
@Profile("hazelcast-cache")
public class HazelcastCacheConfig {@Beanpublic Config hazelCastConfig() {Config config = new Config();config.setInstanceName("hazelcast-cache");MapConfig allUsersCache = new MapConfig();allUsersCache.setTimeToLiveSeconds(20);allUsersCache.setEvictionPolicy(EvictionPolicy.LFU);config.getMapConfigs().put("alluserscache",allUsersCache);MapConfig usercache = new MapConfig();usercache.setTimeToLiveSeconds(20);usercache.setEvictionPolicy(EvictionPolicy.LFU);config.getMapConfigs().put("usercache",usercache);return config;}}

我们刚刚创建了两个具有20秒ttl策略的地图。 因此,自填充地图以来20秒,将发生缓存逐出。 有关更多的hazelcast配置,请参阅官方的hazelcast 文档 。

我们必须实现的另一项更改是将UserPayload更改为可序列化的Java对象,因为存储在hazelcast中的对象必须是可序列化的。

package com.gkatzioura.caching.model;import java.io.Serializable;/*** Created by gkatzioura on 1/5/17.*/
public class UserPayload implements Serializable {private String userName;private String firstName;private String lastName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}
}

最后但并非最不重要的一点是,我们添加了另一个绑定到hazelcast-cache配置文件的存储库。

结果就是我们先前的与hazelcast集成的spring-boot应用程序,而不是使用ttl策略配置的默认缓存。

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2017/01/spring-boot-cache-abstraction-hazelcast.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu18.04 安装搜狗输入法后无法启动的问题

ibus 改选成fcitx后搜狗输入法照样没出来。 这里需要im-config 没有的话需要安装: sudo apt install im-config 然后在Terminal中执行 im-config 根据提示选择fcitx转载于:https://www.cnblogs.com/feipeng8848/p/9609877.html

linux华为路由器模拟器,华为路由器模拟器与实验内容.doc

华为路由器模拟器与实验内容华为的路由器模拟器及实验内容??2009-12-21 20:27:53|??分类: HYPERLINK "/ah..zhangrui/blog/" \l "m0&t1&cfks_080074086080086074092094074070087095083070092086084" \o "默认分类" 默认分…

_WIN32_WCE有什么用

转载自:http://blog.csdn.net/thanklife/article/details/21477561 _WIN32_WCE有什么用,我这里找了一些人的回应。由于目前我手头的源码有限,还没有找到定义之处。先这样保留着这个问题吧。以下是一些别人给的认识。 经常看到 #ifndef _WIN32_WCE 这是什…

zk ui_高级ZK:异步UI更新和后台处理–第1部分

zk ui异步UI更新非常有用,因为它们通常可以提高响应性,可用性和用户界面的总体感觉。 我将在这里重点介绍ZK框架,但是通常,相同的原理也适用于桌面UI(Swing,SWT)。 长时间运行的处理 有时您可能…

BZOJ 3223: Tyvj 1729 文艺平衡树-Splay树(区间翻转)模板题

3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6881 Solved: 4213[Submit][Status][Discuss]Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作&#…

在Spring中了解事务注释

1.简介 Spring为程序性和声明性事务提供支持。 1.1程序化交易 对于程序性事务,需要显式编写事务管理代码,以便在一切成功后提交,并在出现问题时回滚。 在这种情况下,事务管理代码与业务逻辑紧密绑定。 1.2声明式交易 声明式事…

GIS开源库shapeLib的使用方法

转自:http://www.cnblogs.com/liongis/archive/2012/10/23/2736015.html 近期研究了一下GIS开源库shapeLib读写ArcGIS数据的API函数,先整理一下,将各个API的用法介绍一下。 分为两个模块,shape API和DBF API,前者的读取…

linux 升级 iphone,Linux 5.13 更新有望增加对苹果 M1 处理器的支持

IT之家 4 月 10 日消息 预计 Linux 5.13 将初步支持苹果 Silicon M1 处理器,不过可能还需要几年时间才能完全支持。虽然已经在苹果 Silicon M1 上运行,但这是通过一系列的补丁,单纯是为了 Linux 能够在 M1 设备上启动而已,而现在 …

201771010118马昕璐

第一部分 理论知识的学习 第三章Java基本程序设计结构 1 基本知识: (1)标识符:标识符由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。Hello、$1234、程序名、www_123都是合法标识符。 标识符可用作类名…

Xshell显示中文乱码问题

转载自:http://www.blogjava.net/RoyPayne/archive/2011/12/21/366899.htmlXshell对于嵌入式开发来说,是个非常不错的工具。但或许都有过被中文显示为乱码的问题感觉有点不爽。解决方法其实很简单的,即把xshell编码方式改成UTF-8即可。 [文…

apache wicket_Apache Wicket:记住我的功能

apache wicket在Web应用程序中,很常见的是具有“记住我”功能,该功能使用户每次访问我们的网站时都能自动登录。 可以使用Spring Security来实现这种功能,但我认为将基于请求的身份验证框架与基于组件的Web框架一起使用并不是最好的主意。 这…

linux pap认证,配置PPP PAP 认证

配置PPP PAP 认证:1. 单向认证:R1启动pap R1为主验证方,R2为被验证方。r1(config)#inter s1/0r1(config-if)#ip add 202.146.0.1 255.255.255.0r1(config-if)#no shutdownr1(config-if)#encapsulation pppr1(config-if)#ppp authenticatin pa…

Shell编程关于Sha-Bang(#!)

转载自:http://blog.chinaunix.net/uid-26657936-id-3066136.html Q. #!的名字为什么叫Sha-Bang? A. Sha-Bang是Sharp和Bang的组合词。Sharp for #, Bang for ! 类似的情况是,C#通常被称为C SharpQ. Sha-Bang(#!)是不是注释?A. 不…

您应该保持联系的十大高级Java对话

在线讲座和视频是学习软件开发新事物的主要资源之一。 您可以找到Java专家与您分享他们的经验,而不必坐下来。 在下面的文章中,我们收集了10位我们最喜欢的演讲者和主题,我们相信每个Java开发人员都应该注意。 获取爆米花,坐下来…

c语言定时器作用,Go语言定时器实现原理及作用

对于任何一个正在运行的应用,如何获取准确的绝对时间都非常重要,但是在一个分布式系统中我们很难保证各个节点上绝对时间的一致性,哪怕通过 NTP 这种标准的对时协议也只能把时间的误差控制在毫秒级,所以相对时间在一个分布式系统中…

非常详细的/etc/passwd解释

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin mengqc:x:500:500:mengqc:/home/mengqc:/bin/bash 在该文件中,每一行用户记录的各个数据段…

QT:基本知识(一);

注: 该博文为扩展型; 1) QString转换为LPCTSTR QString szStr; LPCTSTR str (LPWSTR)(szStr.utf16()); 2) 中文乱码解决; QTextCodec *pCodec QTextCode::codecForName("gb2312"); if(!pCodec) return ""; std…

c语言程序设计实训教材,C语言程序设计实训指导书

摘要:李建中等编著的这本《C语言程序设计实训指导书》为《C语言程序设计》的配套教材.全书共分4部分.第1部分主要介绍Visual C6.0的集成功能界面和操作;第2部分配合主教材的内容,设计了11个实验项目;第3部分对主教材每一章习题给出解答或指导;第4部分为全国计算机等…

SUID SGID

转载自:http://www.cnblogs.com/perseus/articles/2830397.html 如果你对SUID、SGID仍有迷惑可以好好参考一下! Copyright by kevintz.由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较…

动态规划:LIS优化

对于1D/1D动态规划来说,理论时间复杂度都是O(n^2)的,这种动态规划一般都可以进行优化,贴一篇文章 https://wenku.baidu.com/view/e317b1020740be1e650e9a12.html 这里介绍最简单的一种,LIS的求法 其实就是二…