Java调用Geode
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相关推荐
- eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法
linux下通过eclipse开发用java调用c程序的方法: 1.先建立好java工程并建立java文件如下: public class testso { static { ...
- Java调用C/C++编写的第三方dll动态链接库(zz)
这里主要用的方法是JNI.在网上查资料时看到很多人说用JNI非常的复杂,不仅要看很多的文档,而且要非常熟悉C/C++编程.恐怕有很多人在看到诸如此类的评论时已经决定绕道用其他方法了.本文将做详细的介绍 ...
- 使用JNA,让java调用原生代码
JNA定义: JNA:java Native Access,是SUN公司开发的基于JNI的框架.JNI使得Java可以调用原生的c或者c++代码. JNA与JNI(Java Native Interf ...
- java无阻塞执行脚本,JAVA调用Shell脚本-及阻塞的解决方法
JAVA调用Shell脚本--及阻塞的解决办法 用java调用shell,使用 Process p=Runtime.getRuntime().exec(String[] cmd); Runtime.e ...
- Java 调用Oracle的存储过程
2019独角兽企业重金招聘Python工程师标准>>> 1.创建存储过程的语句: 1.表结构:①:create table TESTA(A_ID VARCHAR2(10) not n ...
- Java调用ocx控件以及dll
2019独角兽企业重金招聘Python工程师标准>>> http://lvqingboy-163-com.iteye.com/blog/769358 通过Java调用OCX控件有几种 ...
- java 调用c/c++
2019独角兽企业重金招聘Python工程师标准>>> java 调用c/c++ 第一步: 编写java程序:如-- public class Pxy { static{ //加载动 ...
- java调用cd传输_Java调用Linux命令(cd的处理)
一.Java调用Linux系统的命令非常简单 这是一个非常常用的调用方法示例: 1 publicString executeLinuxCmd(String cmd) {2 System.out.pri ...
- 用Java调用WebService
这是一个用Java调用C#版WebService接口的例子: C#接口: Java代码 <SPAN style="FONT-SIZE: 11px"> using Sys ...
最新文章
- 云主机启动提示Booting from Hard Disk GRUB
- 趣学python3(46)--求素数
- Linux学习笔记-文件权限与路径
- IOS第七天(2:UiTableView 加上数据分离)
- C++中相对路径与绝对路径以及斜杠与反斜杠的区别 及 处理代码
- sencha inspector(调试工具)
- [Project Euler] Problem 26
- 转: ORA-12560: TNS:protocol adapter error(TNS:协议适配器错误)
- 【LeetCode】【字符串】题号:*434. 字符串中的单词数
- 告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现
- Matlab实用程序--图形应用-三角函数曲线
- 【梳理】离散数学 第10章 群与环 10.2 子群与群的陪集分解
- servlet.ServletException: java.lang.NoClassDefFoundError: cn/huiyuan/lwj/vo
- linux查看UID命令,Linux下查看UID
- MAVEN-POM.XML配置解读
- 网线接法简述(直通线、交叉线以及全反线)
- 吴恩达深度学习编程作业 part 2-2
- 关于计算机网络实训室的申请书,计算机网络技术综合实训室建设方案.doc
- html5制作毕业光盘,同学聚会的视频和照片编辑制作,最后刻录成光盘 每人一张(数据刻录)...
- bdd java_Java的BDD框架之间有什么区别?