Apache Geode的Java客户端
首先
下面是使用Apache Geode实现Java客户端的示例。
使用的执行环境是Java8和Geode1.6。
简单的例子 de
依赖
<dependency>
<groupId>org.apache.geode</groupId>
<artifactId>geode-core</artifactId>
<version>1.6.0</version>
</dependency>
Java的代码
import org.apache.geode.cache.Region;
import org.apache.geode.cache.client.ClientCache;
import org.apache.geode.cache.client.ClientCacheFactory;
import org.apache.geode.cache.client.ClientRegionShortcut;
public class GeodeTest {
public static void main(String[] args) {
ClientCache cache = null;
try {
cache = new ClientCacheFactory()
.addPoolLocator("xxx01.yahoo.co.jp", 10334)
.create();
Region<String,String> region = cache
.<String,String>createClientRegionFactory(ClientRegionShortcut.PROXY)
.create("pregion");
region.put("key1", "value1");
String value = region.get("key1");
System.out.println("value:" + value);
} finally {
if ( cache != null ) {
cache.close();
}
}
}
}
执行结果
value:value1
如果有多个locator,需要调用addPoolLocator多次。我认为这个实现方式十分简单,没有必要进行解释的必要。
cache = new ClientCacheFactory()
.addPoolLocator("xxx01.yahoo.co.jp", 10334)
.addPoolLocator("xxx02.yahoo.co.jp", 10334)
.create();
也许有人注意到了代码中的Region<String, String>的描述,但是在Geode中可以存储的不仅仅是String。例如,可能还可以存储Map、List以及自定义的类。在Redis中,如果想存储复杂的数据结构,则会使用Hash或者使用Json进行注册,我认为这是Geode易于使用的一个特点。
注册一个独立的班级
我試著創建一個簡單的實體。
import java.io.Serializable;
public class TestEntity implements Serializable {
private String value1;
private String value2;
// setter/getter割愛
如果在Geode中使用,请注意需要Serializable。
我会按照以下方式进行实施。
Region<String,TestEntity> region = cache
.<String,TestEntity>createClientRegionFactory(ClientRegionShortcut.PROXY)
.create("pregion");
TestEntity putEntity = new TestEntity();
putEntity.setValue1("v1");
putEntity.setValue2("v2");
region.put("key1", putEntity);
TestEntity getEntity = region.get("key1");
System.out.println("value1:" + getEntity.getValue1());
System.out.println("value2:" + getEntity.getValue2());
执行结果
value1:v1
value2:v2
罐子的部署
可以单独注册一个类,但是事实上,只有注册并不能在gfsh上确认该值。
通过将包含先前创建的类的jar部署到Geode上,可以确认该值。
首先,要部署创建好的jar。
gfsh>deploy --jars=/<Jarを配置したディレクトリ>/geode-sanple-1.0.jar
Deploying files: geode-sanple-1.0.jar
Total file size is: 0.01MB
Continue? (Y/n): y
Member | Deployed JAR | Deployed JAR Location
------- | -------------------- | ----------------------------------------------------
server1 | geode-sanple-1.0.jar | /xxxx/geode/server1/geode-sanple-1.0.v1.jar
server2 | geode-sanple-1.0.jar | /xxxx/geode/server2/geode-sanple-1.0.v1.jar
server3 | geode-sanple-1.0.jar | /xxxx/geode/server3/geode-sanple-1.0.v1.jar
我会尝试获取
gfsh>get --region=pregion --key=key1
Result : true
Key Class : java.lang.String
Key : key1
Value Class : TestEntity
value1 | value2
------ | ------
v1 | v2
我已经可以使用gfsh确认内容了。
此外,据说可以使用PDX Serialization来使用,不需要部署,但我还没有试过。
总结
我创建了一个简单的Java客户端。
对于使用Spring的用户,还可以使用Spring Data Geode。因为只需要创建一个连接到Geode的Bean并注入ClientCache,所以我将跳过解释的部分。
下一次我会写关于过期(expire)的内容。