gemfire基本使用以及spring-data-gemfire的使用

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.实体类: 实体类需要部署到程序的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");
      ...
   

原文地址:https://www.cnblogs.com/cord/p/9226690.html

时间: 2024-08-25 11:39:04

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

Spring Data GemFire学习

英文手册:http://docs.spring.io/spring-data/gemfire/docs/1.5.2.RELEASE/reference/html/(Spring Data GemFire Reference Guide) 新版本不用配置Gemfire自带的cache.xml直接用引用名空间的方式,配置Spring配置文件. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu

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

关于Spring Data Spring社区的一个顶级工程,主要用于简化数据(关系型&非关系型)访问,如果我们使用Spring Data来开发程序的话,那么可以省去很多低级别的数据访问操作,如编写数据查询语句.DAO类等,我们仅需要编写一些抽象接口并定义相关操作即可,Spring会在运行期间的时候创建代理实例来实现我们接口中定义的操作. 关于Spring Data子项目 Spring Data拥有很多子项目,除了Spring Data Jpa外,还有如下子项目. Spring Data Comm

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

由于自己一个项目要用多到Sql与NoSql两种截然不同的数据结构,但在编程上我希望统一接口API,让不同类型的数据库能在相同的编程接口模式下运作.于是找了一个spring的官网,发现一个spring data的项目.Spring Data 统一所有访问数据库的接口,为开发者提供一个更加简便的开发方式  Spring Data 官网 下面是几个核心的项目介绍 Spring Data Commons - 每个Spring Data 项目的核心基础 (因此每一个Spring Data项目都使用统一的接

初入spring boot(八 )Spring Data REST

1. 什么是Spring Data REST Spring Data JPA是基于Spring Data 的Repository之上,可以将Repository自动输出为REST资源.目前Spring Data REST支持将Spring Data JPA.Spring Data MongoDB.Spring Data Neo4j.Spring Data Gemfire以及Spring Data Cassandra的Repository自动转换成REST服务. 2. Spring mvc中配置使

What‘s New In Spring Data Release Gosling?

What's New In Spring Data Release Gosling? Engineering Christoph Strobl September 04, 2015 0 Comments Over 300 issues fixed across 12 projects makes it pretty hard to keep track on what has happened since the last release. So here's a more detailed e

Spring Data学习中心

Spring Data 概览 Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性. 它使数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得简单易用. 这是一个伞形项目,其中包含许多特定于给定数据库的子项目. 这些项目是通过与这些激动人心的技术背后的许多公司和开发人员合作开发的. ----------- 星云解读: 众所周知,数据库大体上可以分为关系型数据库和非关系型数据库. 数据库种类繁多,为了

Spring Data JPA实战视频教程

视频大纲 JPA入门 Spring Data JPA入门 Repository的定义 查询方法的命名策略 JPQL查询,结果映射 Named Query,Named Native Query 排序,分页 JPA Criteria查询 Querydsl查询 Query by Example 一对一,一对多,多对一,多对多 @EnableJpaRepositories 注解 自定义.扩展Repository 实体的生命周期 审计 乐观锁,悲观锁 集成 OpenJPA 查询批注 缓存 事务 Sprin

Spring Data 介绍 (一)

简介 Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷 Spring Data JPA能干什么 可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作.除了CRUD外,还包括如分页.排序等一些常用的功能. Spring Data JPA 有什么 主要来看看Spring Data JPA提供的接口,也是Spring Data JPA的核心概念: 1:Repository:最顶层的

SpringData系列一Spring Data的环境搭建

本节作为主要讲解Spring Data的环境搭建 JPA Spring Data :致力于减少数据访问层(DAO)的开发量.开发者唯一要做的就是声音持久层的接口,其他都交给Spring Data JPA来帮你完成! 使用Spring Data JPA进行持久层开发需要的四个步骤: 配置Spring 整合 JPA 在Spring配置文件中配置Spring Data,让Spring 为声明的接口创建代理对象.配置了<jpa:repositories>后,Spring 初始化容器时将会扫描base-

Spring Data 系列(三) Spring+JPA(spring-data-commons)

本章是Spring Data系列的第三篇.系列文章,重点不是讲解JPA语法,所以跑开了JPA的很多语法等,重点放在环境搭建,通过对比方式,快速体会Spring 对JPA的强大功能. 准备代码过程中,保持了每个例子的独立性,和简单性,准备的源码包,下载即可使用.如果,对JPA语法想深入研究的话,直接下载在此基础上进行测试. 前言 Spring Data 系列(一) 入门:简单介绍了原生态的SQL使用,以及JdbcTemplate的使用,在这里写SQL的活还需要自己准备. Spring Data 系