Geode分布式内存数据库rest api 之PHP版本

最近看到篇文章都在谈论12306使用的分布式内存数据库,感觉比较火热,由于对12306充满了好奇心,于是自己就对Geode研究了一下。

Geode 是一个开源的分布式内存数据库,用于构建水平伸缩的应用,基于 GemFire 开发,使用的是java。

它有如下特性,这部分来源于网络介绍。

1. 综合冗余 复制和shared nothing的持久化架构,提供自动预防故障的高性能的传递。
2.横向扩展到数千万个缓存成员,使用多个缓存拓扑来满足不同企业需求缓存能够跨计算机分布。
3.异步和同步缓存更新传播
4.delta变化量传播能只在一个对象(delta)的新旧不同版本之间传播,而不是将整个对象进行传播,好处是显著降低了分布的开销。
5.可靠的异步事件通知,保证消息传递能实现定制的低延时的分布。
6.在没有附加硬件情况下,应用运行性能提高4到40倍。
7.数据敏感和实时商业智能,如果数据改变,你会立即能够看到改变。
8.集成Spring框架简化可扩展的事务企业应用。
9.JTA兼容事务支持
10.跨整个集群范围的配置能够持久或导出到其他集群
11.远程HTTP集群管理
12.REST API和激活REST应用开发
13.主版本滚动升级。

这里有几篇博文非常不错,看官可以有兴趣阅读一下:http://geek.csdn.net/news/detail/34772


目前Geode资料相对较少,所以只能去看它的官方文档,地址:http://geode-docs.cfapps.io/docs/


Geode安装:

注:使用虚拟机安装的同学,尽量把虚拟机内存设为4G。

我使用的centos58,64位,4G

1、首先安装java环境,需要jdk 1.7以上

根据相应的系统环境选择相应的安装包

安装rpm包
rpm -ivh jdk-7u79-linux-x64.rpm

配置环境变量
vi /etc/profile
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
source /etc/profile

2、下载Geode
解压geode
cd geode
./gradlew installDist   #有些教程用的是./gradlew build installDist,但是会很耗时,因为会gradle编译时会运行测试用例,我运行到700多个,花了一个小时也没编译完。

3、启动Geode
cd gemfire-assembly/build/install/apache-geode/bin

#运行gfsh,这个是用来管理geode的工具。
./gfsh 

#启动定位器
start locator --name=locator1

#打开pdx,并且打开本地存储,这个是使用rest api的必须配置,否则会无法创建数据
configure pdx --read-serialized=true --disk-store

#启动服务,ip地址和端口都可以更换
start server --name=server1 --J=-Dgemfire.start-dev-rest-api=true --J=-Dgemfire.http-service-bind-address=192.168.199.132 --J=-Dgemfire.http-service-port=8080

复加注释:
shutdown --include-locators=true   #关闭locator
stop server --dir=/usr/local/src/geode/gemfire-assembly/build/install/apache-geode/bin/server1   #关闭server
http://192.168.199.132:8080/gemfire-api/docs/index.html    #访问这个地址可以查看web版本的api


4、php rest api使用

在看到Geode提供的客户端,目前有java,python,ruby,没有php版本的,因为Geode有提供Rest api的接口,所以写了个php的版本。

代码位置:https://github.com/luzhengfei/php-gemfire-rest

使用方法:

<?php
/**
 * author: lzf
 * createTime: 15/7/1 22:11
 * description:
 */

require_once '../PHPGeodeClient.Api.php';
$geode = new PHPGeodeClient("192.168.199.132","8080");

$re = $geode->list_all_regions();
print_r($re->getRespondData());

$re = $geode->create('user_profile','ccc',array('cccc','dddd' => 'aaaaa'));
print_r($re->getRespondData());

$re = $geode->create('user_profile','xt',array('name' => 'xt','age' => 50));
print_r($re->getRespondData());

$re = $geode->get_region_all('user_profile');
print_r($re->getRespondData());

$re = $geode->get_region_keys('user_profile');
print_r($re->getRespondData());

$re = $geode->get_entries_by_keys('user_profile',array('ccc'));
print_r($re->getRespondData());

$data = array(
        'name' => 'lzf',
        'age' => 23
);
$re = $geode->update('user_profile','ccc',$data);

$re = $geode->create_queries('sel','select * from /user_profile');

//$re = $geode->update_queries('sel','select * from /user_profile where name=\'lzf\'');

$re = $geode->update_queries('sel','select * from /user_profile where age>10');

$re = $geode->execute_queries('sel');
print_r($re->getRespondData());

$re = $geode->list_queries();
print_r($re->getRespondData());

如有问题,欢迎批评指证。 微笑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值