Apache-Ignite入门实战

1. 简介

Apache Ignite 内存数据组织框架是一个高性能、集成化和分布式的内存计算和事务平台,用于大规模的数据集处理,比传统的基于磁盘或闪存的技术具有更高的性能,同时他还为应用和不同的数据源之间提供高性能、分布式内存中数据组织管理的功能。具体介绍可参考官方中文教程

2. 安装

从 https://ignite.apache.org/download.cgi#binaries 下载最新的安装包,这里我下载的是 apache-ignite-fabric-2.4.0-bin.zip 包。下载后解压就可以直接使用了。

3. 运行

进入安装路径的bin目录,然后输入:ignite.sh即可启动ignite服务,输入几次就会启动几个集群节点。如下,我输入三次即启动了3个ignite集群节点。


下面是启动成功的界面:

其中: 

- servers=1 表示当前 Ignite 集群中只有一个节点。 

- clients=0 表示当前没有客户端连接到此集群。

图中红线框可以看到 servers=3,说明有2个新节点加入了集群。


4. 测试

1)用eclipse新建一个动态web项目,并导入相关包。项目结构如下:


2)建一个测试java类,代码如下:

package com.ignite.test;

import javax.cache.expiry.CreatedExpiryPolicy;
import javax.cache.expiry.Duration;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.lang.IgniteFuture;

public class SimpleCache {
	public static void main(String[] args){
		 
        // 以client的模式启动ignite, 数据存储到前面已经启动的ignite节点上 
        Ignition.setClientMode(true);
 
        try(Ignite ignite = Ignition.start()){
        	
        	// 缓存配置
            CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>();
            cacheCfg.setName("myCache");
        	// 设置缓存过期时间
            cacheCfg.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));
        	
        	/**
        	 * 缓存系统中的存储和获取是同步操作
        	 * 在ignite集群中创建名称为simple的分布式缓存。第二次启动时,
        	 * 名称为simple的缓存已经存在获取该缓存,把put语句注释掉仍然可以获取到值
        	 */
            // 如果缓存不存在就创建,如果已存在就获取缓存 
           /* IgniteCache<Integer,String> cache = ignite.getOrCreateCache("simple");
            for(int i = 0; i < 10; i++){
                cache.put(i, i+"haha");
            }
            for(int i=0; i< 10; i++){
                System.out.println(cache.get(i));
            }*/
            
            /**
             * 异步操作
             */
            /*IgniteCache<Integer, String> simple =
                    ignite.getOrCreateCache("simple");
 
			// 启动异步操作 
			@SuppressWarnings("deprecation")
			IgniteCache<Integer, String>  asynCache = simple.withAsync();
			 
			// 原子操作 获取旧值 存入新值
			asynCache.getAndPut(33, "3332");
			 
			// 获取上面调用的future
			@SuppressWarnings("deprecation")
			IgniteFuture<Integer> fut = asynCache.future();
			// 监听结果 
			fut.listen(f -> System.out.println("Previous cache value: " + f.get()));*/
        	
        	/**
        	 * 原子操作
        	 */
        	IgniteCache<Integer, String> simple =ignite.getOrCreateCache("simple");
        	
 
			// 插入或更新  返回旧值 
			String oldVal = simple.getAndPut(11, "haha");
			 
			// 如果不存在则插入 返回旧值
			oldVal = simple.getAndPutIfAbsent(11, "11 getAndPutIfAbsent2");
			 
			// 如果存在则替换 返回旧值
			oldVal = simple.getAndReplace(11, "11 getAndReplace");
			 
			// 删除键值对 返回旧值
			oldVal = simple.getAndRemove(11);
			 
			// 如果不存在则插入 成功返回true
			boolean success = simple.putIfAbsent(12, "12 putIfAbsent");
			 
			// 如果存在则替换 成功返回 true
			success = simple.replace(12, "12 replace");
			 
			// 如果值匹配 则替换 成功返回true
			success = simple.replace(12, "12 replace", "12 12 12");
			 
			// 如果值匹配则删除 成功返回true
			success = simple.remove(11, "11");
        	
			//获取缓存数据并输出
			for(int i=0; i< 20; i++){
				if(simple.get(i)==null) {
					continue;
				}else {
					System.out.println(simple.get(i));
				}
            }
        }
    }
}

3)运行结果如下:


OK! 简单的一个项目就搞定了!

猜你喜欢

转载自blog.csdn.net/xudasong123/article/details/80261051