Goede序列化

Geode提供了Java序列化之外的序列化选项,为数据存储,传输和语言类型提供更高的性能和更大的灵活性。 
Geode DataSerialization 比PDXSerialization快 25%,但使用PDX序列化可以减少反序列化的成本。 
Geode 提供的序列化方式(DataSerialization和PDXSerialization),不支持对象的循环引用,如果多次引用相同的对象,则会将每个引用进行序列化,反序列化会生成对象的多个副本。在这种情况下,Java序列化对象一次,当对象进行反序列化时,它将生成具有多个引用的对象的实例。

Java连接Geode示例

依赖JAR:

    <dependency><groupId>org.apache.geode</groupId><artifactId>geode-core</artifactId><version>1.1.0</version></dependency><dependency><groupId>com.gemstone.gemfire</groupId><artifactId>gemfire</artifactId><version>8.2.2</version></dependency><dependency><groupId>org.apache.geode</groupId><artifactId>geode-json</artifactId><version>1.1.0</version></dependency><dependency><groupId>org.apache.geode</groupId><artifactId>geode-common</artifactId><version>1.1.0</version></dependency>

代码示例:

public class UserEntity implements Serializable{private int id;private int age;private String name;private Date registerdDate;//getter and setter...
}public class DataClient {private final static Logger logger  = Logger.getLogger(DataClient.class);Region region = null;@Beforepublic void init(){ClientCache cache = new ClientCacheFactory().addPoolLocator("db", 10334).create();ClientRegionFactory rf = cache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY);region = rf.create( "user");}@Testpublic void saveUserEntity(){region.putAll(newUserEntity(10));}@Testpublic void clear(){region.clear();}@Testpublic void delele(){region.remove("");}@Testpublic void update(){Object obj = region.get("108");Map<String, UserEntity> map = new HashMap<String, UserEntity>();UserEntity data= ((UserEntity)obj);data.setAge(12);map.put("108",data);region.putAll(map);}@Testpublic void getUserEntity(){try {Object objList = region.query("select * from /user u where u.age > 10");Object obj = region.get("108");if(objList != null && objList instanceof ResultsBag){Iterator iter = ((ResultsBag) objList).iterator();while(iter.hasNext()){UserEntity UserEntity = (UserEntity) iter.next();System.out.println("UserEntity"+UserEntity);}}if(obj != null && obj instanceof UserEntity){System.out.println("UserEntity"+(UserEntity)obj);}}catch (Exception e){logger.error("error occured.", e);}}@Afterpublic void done(){region.close();}private Map<Integer, UserEntity> newUserEntity(int size){Map<Integer, UserEntity> map = new HashMap<Integer, UserEntity>();for (int i = 0; i < size; i++) {int id = i+100;map.put(id,new UserEntity(id,10+i,"username:"+id,new Date()));}return map;}
}

Geode Query

查询示例

 // Identify your query string.String queryString = "SELECT * FROM /exampleRegion";// Get QueryService from Cache.QueryService queryService = cache.getQueryService();// Create the Query Object.Query query = queryService.newQuery(queryString);// Execute Query locally. Returns results set.SelectResults results = (SelectResults)query.execute();// Find the Size of the ResultSet.int size = results.size();// Iterate through your ResultSet.Portfolio p = (Portfolio)results.iterator().next(); /* Region containing Portfolio object. */

查询语法

WHERE 语法 
SELECT * FROM /user WHERE name=‘username’;

LIKE 语法 
SELECT * FROM /user WHERE name like ‘use%’; 
SELECT * FROM /user WHERE name like ‘_use_’;

添加表别名 
SELECT u.id,u.name FROM /user u WHERE u.name=‘username’;

DISTINCT 
SELECT DISTINCT u.name FROM /user u

逻辑操作符 AND,OR,NOT 
SELECT * FROM /user WHERE id>4 and id<9 and not id = 6

其它比较操作 
=,<>,!=,<,⇐,>,>= 
IN,NOT IN 
SELECT * FROM /user WHERE NOT (ID IN SET(1,2))

LIMIT 
SELECT * FROM /user WHERE id>0 LIMIT 10

COUNT 
SELECT COUNT(*) FROM /user WHERE ID > 0 LIMIT 50

Java调用Geode相关推荐

  1. eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法

    linux下通过eclipse开发用java调用c程序的方法: 1.先建立好java工程并建立java文件如下: public class testso {     static {         ...

  2. Java调用C/C++编写的第三方dll动态链接库(zz)

    这里主要用的方法是JNI.在网上查资料时看到很多人说用JNI非常的复杂,不仅要看很多的文档,而且要非常熟悉C/C++编程.恐怕有很多人在看到诸如此类的评论时已经决定绕道用其他方法了.本文将做详细的介绍 ...

  3. 使用JNA,让java调用原生代码

    JNA定义: JNA:java Native Access,是SUN公司开发的基于JNI的框架.JNI使得Java可以调用原生的c或者c++代码. JNA与JNI(Java Native Interf ...

  4. java无阻塞执行脚本,JAVA调用Shell脚本-及阻塞的解决方法

    JAVA调用Shell脚本--及阻塞的解决办法 用java调用shell,使用 Process p=Runtime.getRuntime().exec(String[] cmd); Runtime.e ...

  5. Java 调用Oracle的存储过程

    2019独角兽企业重金招聘Python工程师标准>>> 1.创建存储过程的语句: 1.表结构:①:create table TESTA(A_ID VARCHAR2(10) not n ...

  6. Java调用ocx控件以及dll

    2019独角兽企业重金招聘Python工程师标准>>> http://lvqingboy-163-com.iteye.com/blog/769358 通过Java调用OCX控件有几种 ...

  7. java 调用c/c++

    2019独角兽企业重金招聘Python工程师标准>>> java 调用c/c++ 第一步: 编写java程序:如-- public class Pxy { static{ //加载动 ...

  8. java调用cd传输_Java调用Linux命令(cd的处理)

    一.Java调用Linux系统的命令非常简单 这是一个非常常用的调用方法示例: 1 publicString executeLinuxCmd(String cmd) {2 System.out.pri ...

  9. 用Java调用WebService

    这是一个用Java调用C#版WebService接口的例子: C#接口: Java代码 <SPAN style="FONT-SIZE: 11px"> using Sys ...

最新文章

  1. 云主机启动提示Booting from Hard Disk GRUB
  2. 趣学python3(46)--求素数
  3. Linux学习笔记-文件权限与路径
  4. IOS第七天(2:UiTableView 加上数据分离)
  5. C++中相对路径与绝对路径以及斜杠与反斜杠的区别 及 处理代码
  6. sencha inspector(调试工具)
  7. [Project Euler] Problem 26
  8. 转: ORA-12560: TNS:protocol adapter error(TNS:协议适配器错误)
  9. 【LeetCode】【字符串】题号:*434. 字符串中的单词数
  10. 告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现
  11. Matlab实用程序--图形应用-三角函数曲线
  12. 【梳理】离散数学 第10章 群与环 10.2 子群与群的陪集分解
  13. servlet.ServletException: java.lang.NoClassDefFoundError: cn/huiyuan/lwj/vo
  14. linux查看UID命令,Linux下查看UID
  15. MAVEN-POM.XML配置解读
  16. 网线接法简述(直通线、交叉线以及全反线)
  17. 吴恩达深度学习编程作业 part 2-2
  18. 关于计算机网络实训室的申请书,计算机网络技术综合实训室建设方案.doc
  19. html5制作毕业光盘,同学聚会的视频和照片编辑制作,最后刻录成光盘 每人一张(数据刻录)...
  20. bdd java_Java的BDD框架之间有什么区别?

热门文章

  1. node.js+uni计算机毕设项目基于小程序的农牧认养系统(程序+小程序+LW)
  2. 线上商城做活动,页面氛围布置不能少
  3. C语言和Python有什么区别呢
  4. word中遇到复制粘贴无法使用的解决方法
  5. 由数据迁移至MongoDB导致的数据不一致问题及解决方案
  6. Ehcache配置详解
  7. MySQL使用全文索引(fulltext index) 及中文全文索引使用
  8. hutool中Convert工具类的常用方法
  9. SpringCloud 组件Gateway服务网关【断言工厂过滤器工厂】
  10. vs_qt 联合开发