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! 简单的一个项目就搞定了!