本篇文章为大家展示了spring boot与内存数据库Hazelcast整合是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
在合山等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、成都网站制作 网站设计制作按需设计网站,公司网站建设,企业网站建设,高端网站设计,网络营销推广,成都外贸网站建设,合山网站建设费用合理。
前言
spring boot 在此就不多做介绍了,想来大家对他应该都不陌生了
Hazelcast 可能大家就毕竟陌生了:
- 简单易用 
 Hazelcast是用Java编写的,没有其他依赖关系。只需简单的把jar包引入项目的classpath即可创建集群。
- 无主从模式 
 与许多NOSQL解决方案不同,Hazelcast节点是点对点的。没有主从关系; 所有成员都存储相同数量的数据,并进行相等的处理,避免了单点故障。
- 弹性可扩展 
 Hazelcast旨在扩展成千上万的成员。新成员启动,将自动发现群集,并线性增加存储和处理能力。成员之间通过TCP保持连接和通讯。
- 读写快速高效 
 Hazelcast所有数据都存储在内存中,提供基于内存快速高效的读写能力。
PS:另外就是——根据基准测试,Hazelcast在获取数据方面比redis快56%,在设置数据方面比Redis快44%。
用例
下面主要是讲讲springboot和Hazelcast的整合,并给出Hazelcast支持的数据类型MAP、List、Topic、Queue给出了使用实例。
整合配置:
@Configuration
public class HazelcastConfig {
	@Bean
	public Config config() {
		Config config = new Config();
		GroupConfig gc=new GroupConfig(Const.HAZELCAST_NAME);//解决同网段下,不同库项目
		
		config.setInstanceName("hazelcast-instance")
				.addMapConfig(new MapConfig().setName("configuration")
				.setMaxSizeConfig(new MaxSizeConfig(2000, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
				.setEvictionPolicy(EvictionPolicy.LRU).setTimeToLiveSeconds(-1))
				.setGroupConfig(gc);
		return config;
	}
	
	@Bean
	public HazelcastInstance hazelcastInstance(Config config) {
		HazelcastInstance hzInstance = Hazelcast.newHazelcastInstance(config); 
		//分布式map监听
		IMapmap数据变化的拦截器实现:
public class IMapInterceptor implements MapInterceptor{
	private static final long serialVersionUID = 3556808830046436753L;
	@Override
	public Object interceptGet(Object value) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void afterGet(Object value) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public Object interceptPut(Object oldValue, Object newValue) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void afterPut(Object value) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public Object interceptRemove(Object removedValue) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void afterRemove(Object oldValue) {
		// TODO Auto-generated method stub
		
	}
}map数据变化的监听器实现:
public class IMapListener implements EntryAddedListener{ @Override public void entryAdded(EntryEvent event) { // TODO Auto-generated method stub //干你监听的操作 System.out.println("MAP分布式监听:"+event.getValue()); } } 
Topic订阅接收消息:
public class TopicListener implements MessageListener{ @Override public void onMessage(Message message) { String msg=message.getMessageObject(); System.out.println("收到Topic消息:"+msg); } } 
List和Queue的实例
这两个我就没写在实际代码中,在test写了2个main方法
//生产数据
public class HazelcastGetStartServerMaster {
    public static void main(String[] args) {
        // 创建一个 hazelcastInstance实例
        HazelcastInstance instance = Hazelcast.newHazelcastInstance();
        // 创建集群Map
        IList//消费数据
public class HazelcastGetStartServerSlave {
    public static void main(String[] args) {
        //创建一个 hazelcastInstance实例
        HazelcastInstance instance = Hazelcast.newHazelcastInstance();
        IList这个时候启动项目显示如下:

当前只有一个节点,端口为:5701
这个时候写个main方法测试分布式map:
public class IMapTest {
	public static void main(String[] args) {
		Config config = new Config();
		GroupConfig gc=new GroupConfig(Const.HAZELCAST_NAME);
		config.setGroupConfig(gc);
		HazelcastInstance hzInstance = Hazelcast.newHazelcastInstance(config); 
		
		IMap imap = hzInstance.getMap(Const.MAP_NAME);
		imap.put("myKey", "myObject");
    }
} 运行main方法发现原来启动的项目找那个Member变成了2个,因为main方法中也启动了一个Hazelcast实例加入了集群中。imap的拦截器,我监听器都生效了。并获取到了main方法中加的数据,因为Hazelcast是集群的,数据可以在许多应用程序实例之间共享。
上述内容就是spring boot与内存数据库Hazelcast整合是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
名称栏目:springboot与内存数据库Hazelcast整合是怎样的
网页链接:http://www.scyingshan.cn/article/pjcipo.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 