1.安装程序的使用

  • locator
启动locator
gfsh>start locator --name=locator1 指定端口启动
gfsh>start locator --name=locator1 --port=12105 指定端口和绑定ip启动
gfsh>start locator --name=locator1 --port=12105 --bind-address=10.10.10.110 查看locator状态
gfsh>status locator --name=locator1
gfsh>status locator --host=localhost --port=10334 连接locator
gfsh>connect
gfsh>connect --locator=localhost[10335] 关闭locator
gfsh>stop locator --name=locator1 关闭整个集群
gfsh>shutdown --include-locators=true
  • server
启动server
gfsh>start server --name=server1 指定locator启动
gfsh>start server --name=server1 --locators=localhost[10334] 指定端口和locator启动
gfsh>start server --name=server1 --server-port=12104 --locators=10.10.10.110[12105] 停止server
gfsh>stop server --name=server1
  • region
创建region
gfsh>create region --name=test --type=REPLICATE_PERSISTENT 存储kv值
gfsh>put --region=test --key="a" --value="A" 查询信息
gfsh>query --query="select * from /test" 查看region信息
gfsh>describe region --name=test 销毁region
gfsh>destroy region --name=test
  • 部署jar包(deploy)

    gemfire中部署jar包分为实体类和计算类两种情况:

    1.实体类: 实体类需要部署到gemfire程序的classpath路径下面;

    2.计算类: 对于计算类,可以通过deploy命令手动部署;

部署jar包
gfsh>deploy --jars=/data/local/gemfire/apache-geode-1.5.0/lib/geode-demo-1.0-SNAPSHOT.jar 查看已部署jar包
gfsh>list deployed 卸载jar包
gfsh>undeploy --jar=geode-demo-1.0-SNAPSHOT.jar

2. 结合spring-data的使用

maven依赖:

    <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-gemfire</artifactId>
<version>2.0.6.RELEASE</version>
<exclusions>
<exclusion>
<groupId>io.pivotal.gemfire</groupId>
<artifactId>geode-lucene</artifactId>
</exclusion>
</exclusions>
</dependency>
2.1 客户端模式(client)
  • 配置文件:

ClientContext.xml

    <!-- 定义client-cache-->
<gfe:client-cache id="gemfireCache" pool-name="gemfirePool"/>
<!-- 定义locator连接池-->
<gfe:pool id="gemfirePool" subscription-enabled="true">
<!--<gfe:locator host="localhost" port="10334"/>-->
<gfe:locator host="10.10.10.110" port="12105"/>
</gfe:pool> <!-- 定义客户端region -->
<gfe:client-region id="messages" cache-ref="gemfireCache" value-constraint="com.cord.demo.data.Message" shortcut="PROXY"/>
  • 通过spring-data接口CrudRepository实现OQL查询region:

MessageReposirory.java

@Repository
@DependsOn("gemfireCache")
public interface MessageReposirory extends CrudRepository<Message, String>{ @Query("SELECT * FROM /messages m WHERE m.message = $1")
List<Message> findByMessage(String message); @Query("SELECT * FROM /messages m WHERE m.message IN SET $1")
List<Message> findByMessages(List<String> messages); }

ClientTestController.java

...
List<Message> c1 = reposirory.findByMessage("C");
c1.stream().forEach(System.out::println);
...

结论: 客户端模式更多的是对集群中数据的查询,而对集群中region的管理有限

2.2 服务端嵌入模式(server)

配置文件:

ServerContext.xml

<!-- 定义region-->
<gfe:replicated-region id="messages" value-constraint="com.cord.demo.data.Message"/>

application.properties

#server端口和绑定地址
spring.data.gemfire.cache.server.port=41414
spring.data.gemfire.cache.server.bind-address=localhost
#locator端口和地址
spring.data.gemfire.locator.host=localhost
spring.data.gemfire.locator.port=10335

gemfire.properties

#开启jmx
jmx-manager=true
jmx-manager-start=true
#指定访问locator集群
locators=localhost[10334],localhost[10335]

启动类注解:

ServerApplication.java

@SpringBootApplication
@CacheServerApplication(name = "embedServer")
@EnableLocator
@EnableGemfireRepositories(basePackages = "com.cord.demo.dao")
@ImportResource(locations = {"classpath:ServerContext.xml"})
public class ServerApplication implements CommandLineRunner {
...
}

动态创建region:

ServerTestController.java

   	...
@Autowired
private Cache gemfireCache; //系统默认的cache名 ...
/**获取region工厂*/
RegionFactory<String, String> rf = gemfireCache.createRegionFactory(RegionShortcut.REPLICATE);
/**创建region*/
Region<String, String> region = rf.create("test");
...

gemfire基本使用以及spring-data-gemfire的使用的更多相关文章

  1. 初探 spring data(一)--- spring data 概述

    由于自己一个项目要用多到Sql与NoSql两种截然不同的数据结构,但在编程上我希望统一接口API,让不同类型的数据库能在相同的编程接口模式下运作.于是找了一个spring的官网,发现一个spring ...

  2. Spring Data(一)概念和仓库的定义

    Spring Data(一)概念和仓库的定义 Spring Data的主要任务是为数据访问提供一个相似的.一致的.基于Spring的编程模型,同时又保留着下面各个数据存储的特征.它使得使用数据访问技术 ...

  3. Spring Data JPA例子[基于Spring Boot、Mysql]

    关于Spring Data Spring社区的一个顶级工程,主要用于简化数据(关系型&非关系型)访问,如果我们使用Spring Data来开发程序的话,那么可以省去很多低级别的数据访问操作,如 ...

  4. 初入spring boot(八 )Spring Data REST

    1. 什么是Spring Data REST Spring Data JPA是基于Spring Data 的Repository之上,可以将Repository自动输出为REST资源.目前Spring ...

  5. Spring Data:企业级Java的现代数据访问技术(影印版)

    <Spring Data:企业级Java的现代数据访问技术(影印版)>基本信息原书名:Spring Data:Modern Data Access for Enterprise Java作 ...

  6. 两行代码玩转Spring Data排序和分页

    一:唠嗑 在实际项目中对Spring Data的各种使用相当多,简单的增删改查Spring Data提供了现成的方法,一些复杂的,我们可以在接口方法写And,Not等关键字来搞定,想写原生SQL,CQ ...

  7. Spring Data学习中心

    Spring Data 概览 Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性. 它使数据访问技术,关系数据库和非关系数据库,map ...

  8. Spring Data REST不完全指南(一)

    简介 Spring Data REST是Spring Data项目的一部分,可轻松在Spring Data存储库上构建超媒体驱动的REST Web服务. Spring Data REST 构建在 Sp ...

  9. 快速搭建springmvc+spring data jpa工程

    一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...

  10. spring boot(五):spring data jpa的使用

    在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...

随机推荐

  1. Flink 源码解析 —— 如何获取 JobGraph?

    JobGraph https://t.zsxq.com/naaMf6y 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 F ...

  2. 把Python项目打包成exe文件

    我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...

  3. Gin + Vue全栈开发实战(一)

    Gin入门 本章概要 Gin简介 开发第一个Gin程序 1.1 Gin简介 Gin是用Go语言编写的一个轻量级Web应用框架,现在在各个公司包括字节跳动.bilibili等大互联网公司都得到了广泛的应 ...

  4. javascript——原型与继承

    一.什么是继承? 继承是面向对象语言的一个重要概念.许多面向对象语言都支持两种继承方式:接口继承和实现继承:接口继承只继承方法签名,而实现继承则继承实际的方法.由于函数没有签名,所以ECMAScrip ...

  5. 自然语言处理(NLP)的一般处理流程!

    1. 什么是NLP 自然语言处理 (Natural Language Processing) 是人工智能(AI)的一个子领域.自然语言处理是研究在人与人交互中以及在人与计算机交互中的语言问题的一门学科 ...

  6. Python模块之requests,urllib和re

    目录 一.爬虫的步骤 二.使用Jupyter 三.爬虫请求模块之urllib 四.爬虫请求模块之requests 五.爬虫分析之re模块 一.爬虫的步骤 1.发起请求,模拟浏览器发送一个http请求 ...

  7. 对已经存在的hbase表修改压缩方式

    业务上可能会遇到这种情况,在最初创建hbase表时候,未指定压缩方式,当数据导入之后,由rowkey带来的数据膨胀导致hdfs上的数据大小远远大于原始数据大小.所以这时候可能就不得不考虑使用压缩,但是 ...

  8. vue入门:用户管理demo

    该demo纯前端实现 使用到vue技术点: 1.在该demo中使用到的vue指令:{{}}. v-if. v-model. @click v-for 2.在该demo中使用到的事件修饰符: .prev ...

  9. 【Python3爬虫】快就完事了--使用Celery加速你的爬虫

    一.写在前面 在上一篇博客中提到过对于网络爬虫这种包含大量网络请求的任务,是可以用Celery来做到加速爬取的,那么,这一篇博客就要具体说一下怎么用Celery来对我们的爬虫进行一个加速! 二.知识补 ...

  10. unity_实用小技巧(相机跟随两个主角移动)

    在两人对战的游戏中,有时候我们希望能看清楚两玩家的状态,这时我们需要让相机跟随玩家,可是我们不能让相机只跟随一个玩家移动,这时我们可以取两玩家的中点作为相机的位置.方法如下: public Trans ...