gemfire基本使用以及spring-data-gemfire的使用
2024-08-24 15:47:53
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");
...
最新文章
- Android之sqlite的使用 (转载)
- FusionCharts简单教程(一)---建立第一个FusionCharts图形
- PS转手绘
- Java学习-001-JDK安装配置
- 前端开发工程师:网易web前端课程,价值1499元【无水印版】
- AVL学习笔记
- C3P0连接池详解及配置
- 用Time Machine做更换电脑工具
- openssl数字证书常见格式与协议介绍
- ES6学习笔记(三)
- C#XML创建与节点对象引用
- 第二部分面向对像基础第五章Strng类中方法的使用
- xcode - 触摸移动
- 手机cpu结构,arm
- EL表达式得不到后台传过来的值
- 在Gazebo中使用DEM構建起伏地形環境
- Ajax与JSON共同使用的小实例
- 执行代码出现ImportError:attempted relative import with no known parent package
- IIS发布ASP.NET Core
- JavaMail发送邮箱
热门文章
- Powered by .NET Core 进展:第5次发布尝试(Windows部署)
- nodejs简单抓包工具
- asp.net core系列 71 Web架构分层指南
- Mybatis框架(9)---Mybatis自定义插件生成雪花ID做为表主键项目
- 记录一则clear重做日志文件的案例
- 基于CAS分析对ABA问题的一点思考
- python 16 模块
- React-native 关于 android真机 出现连不上服务器
- PythonWeb框架Django:虚拟环境安装(virtualenv)
- 数据的查找和提取[2]——xpath解析库的使用