昨天研究了半天apache geode,通过gfsh命令查询和操作比较简单,但是如何通过程序查询因为资历太少,没有搞懂,试验了半天才明白

1.创建测试regioncreate region --name=user --type=REPLICATE_PERSISTENT

2.用eclipse创建maven工程

修改pom.xml,需要引入gemfire-8.2.0.jar,这个在

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

io.proinsight

hellogeode

0.0.1-SNAPSHOT

jar

hellogeode

http://maven.apache.org

UTF-8

org.apache.geode

geode-core

1.2.0

org.apache.geode

geode-json

1.2.0

org.apache.geode

geode-common

1.2.0

log4j

log4j

1.2.17

org.apache.logging.log4j

log4j-core

2.8.2

org.apache.logging.log4j

log4j-api

2.8.2

log4j

log4j

1.2.17

commons-codec

commons-codec

1.10

org.apache.commons

commons-lang3

3.4

junit

junit

4.12

com.alibaba

fastjson

1.2.13

org.apache.maven.plugins

maven-compiler-plugin

3.3

1.8

1.8

org.apache.maven.plugins

maven-jar-plugin

2.6

true

lib/

io.proinsight.hellogeode.App

org.apache.maven.plugins

maven-dependency-plugin

2.10

copy-dependencies

package

copy-dependencies

${project.build.directory}/lib

新建UserBean.javapackage io.proinsight.hellogeode;

import java.io.DataInput;

import java.io.DataOutput;

import java.io.IOException;

import java.util.Date;

import org.apache.geode.DataSerializable;

import org.apache.geode.DataSerializer;

public class UserBean implements DataSerializable{

/**

* 必须有这个方法,否则查询会报没有init()这个方法

* */

public UserBean() {

}

public UserBean(int id2, int i, String string, Date date) {

// TODO Auto-generated constructor stub

this.id=id2;

this.age=i;

this.name=string;

this.createTime=date;

}

/**

* id

* */

private int id;

/**

* 年龄

* */

private int age;

/**

* 姓名

* */

private String name;

/**

* 创建时间

* */

private Date createTime;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Date getCreateTime() {

return createTime;

}

public void setCreateTime(Date createTime) {

this.createTime = createTime;

}

public void fromData(DataInput in) throws IOException, ClassNotFoundException {

this.id = in.readInt();

this.age=in.readInt();

this.name = in.readUTF();

this.createTime = DataSerializer.readDate(in);

}

public void toData(DataOutput out) throws IOException {

out.writeInt(this.id);

out.writeInt(this.age);

out.writeUTF(this.name);

DataSerializer.writeDate(this.createTime, out);

}

}

修改App.javapackage io.proinsight.hellogeode;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import org.apache.geode.DataSerializer;

import org.apache.geode.cache.Region;

import org.apache.geode.cache.RegionFactory;

import org.apache.geode.cache.client.ClientCache;

import org.apache.geode.cache.client.ClientCacheFactory;

import org.apache.geode.cache.client.ClientRegionFactory;

import org.apache.geode.cache.client.ClientRegionShortcut;

import org.apache.geode.cache.query.internal.ResultsBag;

import com.alibaba.fastjson.JSON;

/**

* Hello world!

*

*/

public class App

{

String regionName="user";

int userNum=10;

public static void main( String[] args )

{

new App().test();

}

public void test(){

Region region = null;

ClientCache cache = new ClientCacheFactory().addPoolLocator("192.168.60.50", 10334).create();

ClientRegionFactory rf = cache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY);

//打开user表

region = rf.create(regionName);

System.out.println("开始创建用户");

create(region);

select(region);

System.out.println("完成创建用户");

System.out.println("开始修改用户");

update(region);

select(region);

System.out.println("完成修改用户");

System.out.println("开始删除用户");

delete(region,108);

select(region);

System.out.println("完成删除用户");

System.out.println("开始清空表");

truncate(region);

select(region);

System.out.println("完成清空表");

//关闭表

region.close();

}

/**

* 查询user表

* */

public void select(Region region){

try {

Object objList = region.query("select * from /"+regionName+" u where u.age > 15");

if(objList != null && objList instanceof ResultsBag){

Iterator iter = ((ResultsBag) objList).iterator();

while(iter.hasNext()){

UserBean userBean = (UserBean) iter.next();

System.out.println("User信息:"+JSON.toJSONString(userBean));

}

}

Object obj = region.get(108);

if(obj != null && obj instanceof UserBean){

System.out.println("User108信息"+JSON.toJSONString(obj));

}

}catch (Exception e){

e.printStackTrace();

//            logger.error("error occured.", e);

}

}

/**

* 增加10个

* */

public void create(Region region){

for (int i = 0; i

int id = i+100;

region.put(id, new UserBean(id,10+i,"username:"+id,new Date()));

}

}

/**

* 修改

* */

public void update(Region region){

UserBean user108= (UserBean) region.get(108);

if(user108 != null && user108 instanceof UserBean){

System.out.println("User108信息"+JSON.toJSONString(user108));

//修改年龄为

user108.setAge(12);

region.put(user108.getId(), user108);

}

}

/**

* 删除某个用户

* */

public void delete(Region region,Integer id){

region.remove(id);

}

/**

* 清空表

* */

public void truncate(Region region){

region.clear();

}

}

3.打包

maven install一下

在target目录下有对应的jar包

然后把hellogeode-0.0.1-SNAPSHOT.jar拷贝到geode服务器上某个目录例如/tmp/t/下

4.发布Jar到geode里

为啥要发布到geode里呢?因为我们用UserBean的序列化和反序列化作为表结构,因此deode查询时需要UserBean.class,因此我们发布hellogeode-0.0.1-SNAPSHOT.jar到geode,主要是为了把UserBean.class导入到geode里;gfsh>deploy  --jar=/tmp/t/hellogeode-0.0.1-SNAPSHOT.jar

Member  |         Deployed JAR          | Deployed JAR Location

-------- | ----------------------------- | -----------------------------------------------------------------

server50 | hellogeode-0.0.1-SNAPSHOT.jar | /opt/apache-geode-1.2.1/server50/hellogeode-0.0.1-SNAPSHOT.v1.jar

若是我们对UserBean有修改的话,需要先卸载jar,然后再重新发布gfsh>undeploy  --jar=hellogeode-0.0.1-SNAPSHOT.jar

Member  |        Un-Deployed JAR        | Un-Deployed From JAR Location

-------- | ----------------------------- | -----------------------------------------------------------------

server50 | hellogeode-0.0.1-SNAPSHOT.jar | /opt/apache-geode-1.2.1/server50/hellogeode-0.0.1-SNAPSHOT.v1.jar

gfsh>deploy  --jar=/tmp/t/hellogeode-0.0.1-SNAPSHOT.jar

Member  |         Deployed JAR          | Deployed JAR Location

-------- | ----------------------------- | -----------------------------------------------------------------

server50 | hellogeode-0.0.1-SNAPSHOT.jar | /opt/apache-geode-1.2.1/server50/hellogeode-0.0.1-SNAPSHOT.v1.jar

5.测试

测试程序在eclipse里运行即可,不需要放到服务器上运行

在eclipse运行app.java

测试结果开始创建用户

[info 2017/09/27 13:09:13.422 CST  tid=0x17] AutoConnectionSource discovered new locators [slave1/211.98.71.195:10334]

[info 2017/09/27 13:09:13.511 CST  tid=0x1] Updating membership port.  Port changed from 0 to 51,084.  ID is now bogon(92040:loner):0:0c29bdc1

User信息:{"age":12,"createTime":1506488953578,"id":102,"name":"username:102"}

User信息:{"age":15,"createTime":1506488953592,"id":105,"name":"username:105"}

User信息:{"age":14,"createTime":1506488953588,"id":104,"name":"username:104"}

User信息:{"age":10,"createTime":1506488953405,"id":100,"name":"username:100"}

User信息:{"age":19,"createTime":1506488953611,"id":109,"name":"username:109"}

User信息:{"age":13,"createTime":1506488953583,"id":103,"name":"username:103"}

User信息:{"age":18,"createTime":1506488953606,"id":108,"name":"username:108"}

User信息:{"age":11,"createTime":1506488953573,"id":101,"name":"username:101"}

User信息:{"age":16,"createTime":1506488953597,"id":106,"name":"username:106"}

User信息:{"age":17,"createTime":1506488953602,"id":107,"name":"username:107"}

User108信息{"age":18,"createTime":1506488953606,"id":108,"name":"username:108"}

完成创建用户

开始修改用户

User108信息{"age":18,"createTime":1506488953606,"id":108,"name":"username:108"}

User信息:{"age":17,"createTime":1506488953602,"id":107,"name":"username:107"}

User信息:{"age":12,"createTime":1506488953578,"id":102,"name":"username:102"}

User信息:{"age":15,"createTime":1506488953592,"id":105,"name":"username:105"}

User信息:{"age":12,"createTime":1506488953606,"id":108,"name":"username:108"}

User信息:{"age":13,"createTime":1506488953583,"id":103,"name":"username:103"}

User信息:{"age":19,"createTime":1506488953611,"id":109,"name":"username:109"}

User信息:{"age":16,"createTime":1506488953597,"id":106,"name":"username:106"}

User信息:{"age":11,"createTime":1506488953573,"id":101,"name":"username:101"}

User信息:{"age":14,"createTime":1506488953588,"id":104,"name":"username:104"}

User信息:{"age":10,"createTime":1506488953405,"id":100,"name":"username:100"}

User108信息{"age":12,"createTime":1506488953606,"id":108,"name":"username:108"}

完成修改用户

开始删除用户

User信息:{"age":15,"createTime":1506488953592,"id":105,"name":"username:105"}

User信息:{"age":12,"createTime":1506488953578,"id":102,"name":"username:102"}

User信息:{"age":16,"createTime":1506488953597,"id":106,"name":"username:106"}

User信息:{"age":10,"createTime":1506488953405,"id":100,"name":"username:100"}

User信息:{"age":13,"createTime":1506488953583,"id":103,"name":"username:103"}

User信息:{"age":19,"createTime":1506488953611,"id":109,"name":"username:109"}

User信息:{"age":11,"createTime":1506488953573,"id":101,"name":"username:101"}

User信息:{"age":17,"createTime":1506488953602,"id":107,"name":"username:107"}

User信息:{"age":14,"createTime":1506488953588,"id":104,"name":"username:104"}

完成删除用户

开始清空表

完成清空表

geode java_用java连接apache geode相关推荐

  1. geode mysql_安装和使用apache geode

    最近在研究开源内存数据库,apache ignite用了一段时间感觉还行因为资料太少,因此只是用了它的rpc功能做了一个分布式框架. 前天发现apache geode这个框架,据说是12306的Gem ...

  2. Apache Geode 1.4 快速搭建示例

    第1步:安装Apache Geode 有关说明,请参见如何安装. 第2步:使用gfsh启动定位器 在终端窗口中,使用gfsh命令行界面启动定位器.Apache Geode gfsh(发音为" ...

  3. Apache Geode 2.10 运行Geode定位器进程

    运行Geode定位器进程 定位器是一个Geode进程,它告诉运行成员有新的连接成员,并为服务器使用提供负载平衡. 您可以将定位器作为对等定位器,服务器定位器或两者运行: 对等定位器将加入成员的连接信息 ...

  4. Apache Geode配置和运行集群

    简要说明 使用gfsh命令行实用工具配置Apache Geode集群(也称为"分布式系统").集群配置服务持久化集群配置,并将配置分发给集群成员.还有其他几种配置集群的方法. 使用 ...

  5. Apache Geode 2.11 运行Geode服务器进程

    运行Geode服务器进程 Geode服务器是一个作为客户端/服务器系统的长期可配置成员运行的进程. Geode服务器主要用于托管长期数据区域以及运行标准Geode进程,例如客户端/服务器配置中的服务器 ...

  6. Apache Geode 1.1 简介

    关于Apache Geode Apache Geode是一个数据管理平台,可在广泛分布的云架构中提供对数据密集型应用程序的实时,一致的访问. Geode跨多个进程汇集内存,CPU,网络资源和可选的本地 ...

  7. 大中型企业的天网:Apache Geode

    2016年11月21日,Apache软件基金会(the Apache Software Foundation,ASF)宣布 Apache Geode已从Apache孵化器毕业成为顶级项目(Top-Le ...

  8. Apache Geode介绍(译)

    简介 Performance is key. Consistency is a must. 性能是关键.一致性是必须的. Providing low latency, high concurrency ...

  9. mysql to geode_万事达卡使用Apache Geode防范欺诈

    但是, 扩展这样的任务关键型系统是一项严峻挑战.万事达卡既需要大量数据,也需要快速响应.如果您无法牺牲数量换取性能(反之亦然),势必会遇到增长方面的问题. 万事达卡最终利用Apache Geode的基 ...

最新文章

  1. windows编辑好的python代码在linux的vim编辑,缩进问题
  2. 实现线程之间的参数传递
  3. error: 'release' is unavailable: not available in automatic reference counting,该怎么解决
  4. 锁的释放流程-ReentrantLock.tryRelease
  5. 数据结构之树和二叉树的应用:二叉排序树(BST)
  6. iOS 12.4 越狱已经发布
  7. android c博客园,android上进行c/C 开发测试(转) - 奋进 - 博客园
  8. funuiTitle-居中问题修改
  9. MOSS Search学习记录(八):高级搜索定制(中)
  10. gdb调试Python进程
  11. Ubuntu下常用软件介绍
  12. 移动硬盘驱动怎么修复_为什么您的新硬盘驱动器未在Windows中显示(以及如何修复)...
  13. 阿里优酷视频分类方法???咋理解啊?
  14. 玩游戏计算机虚拟内存怎么设置,多少虚拟内存设置适合玩游戏(多少虚拟内存设置适合)...
  15. 可视化任务编排拖拉拽的数据集成工具
  16. Java开发中图片压缩工具Thumbnailator
  17. 【织梦插件】xenu软件-网站url和死链提取工具免费下载
  18. VXE-TABLE V4 表格表尾合并
  19. STM32用ST-link下载程序
  20. 新风医疗集团就私有化交易达成最终合并协议;​康泰生物成功分离新冠德尔塔变异株 | 医药健闻...

热门文章

  1. 【Discuz】Discuz的下载、配置与Helloworld
  2. 高并发下秒杀促销活动,你必须知道的9个细节
  3. Window 环境中部署 Jinkens
  4. MySQL简介和特点
  5. Python 开源项目
  6. 说说javascript变量类型和变量类型检测
  7. python刷网_Python制作刷网页流量工具的代码实例
  8. 弹窗加密代码(可关闭)
  9. CONVERT() 函数
  10. 最好的Android apps,Android apps推荐下载