Java(Geode)
2017-05-29 00:00
141 查看
pom.xml
use cases
Analysis data in Memory
cache.xml
InMemoryDataRepository.java
Test.java
<dependencies> <dependency> <groupId>org.apache.geode</groupId> <artifactId>geode-core</artifactId> <version>1.1.1</version> </dependency> </dependencies>
use cases
data cache server platform single instance multiple instances replication instances partition instances(shards/buckets) multiple clusters java data cache client(insert data/update data/delete data/query data) rest data cache client(insert data/update data/delete data/query data)
Analysis data in Memory
cache.xml
<?xml version="1.0" encoding="UTF-8"?> <cache xmlns="http://geode.apache.org/schema/cache" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://geode.apache.org/schema/cache http://geode.apache.org/schema/cache/cache-1.0.xsd" version="1.0"> <cache-server port="40404"/> </cache>
InMemoryDataRepository.java
public class InMemoryDataRepository { private static Map<String, Region<String, Object>> regions = new HashMap<>(); private static CacheFactory cf = new CacheFactory(); private static Cache cache = cf.create(); private static RegionAttributesCreation defaultAttrss = new RegionAttributesCreation(); static { defaultAttrss.setDataPolicy(DataPolicy.NORMAL); int idleTimeout = 10 * 1000; ExpirationAction idleTimeoutAction = ExpirationAction.INVALIDATE; ExpirationAttributes idleExpiration = new ExpirationAttributes(idleTimeout, idleTimeoutAction); defaultAttrss.setRegionIdleTimeout(idleExpiration); int ttlTimeout = 20 * 1000; ExpirationAction ttlTimeoutAction = ExpirationAction.DESTROY; ExpirationAttributes ttlExpiration = new ExpirationAttributes(ttlTimeout, ttlTimeoutAction); defaultAttrss.setEntryTimeToLive(ttlExpiration); int maxSize = 1000; EvictionAttributesImpl evictionAttrs = new EvictionAttributesImpl(); evictionAttrs.setObjectSizer(ReflectionObjectSizer.REFLECTION_SIZE); evictionAttrs.setAlgorithm(EvictionAlgorithm.LRU_ENTRY); evictionAttrs.setAction(EvictionAction.LOCAL_DESTROY); evictionAttrs.setMaximum(maxSize); defaultAttrss.setEvictionAttributes(evictionAttrs); defaultAttrss.setStatisticsEnabled(true); defaultAttrss.setScope(Scope.LOCAL); defaultAttrss.setLoadFactor(0.75f); defaultAttrss.setOffHeap(false); } public static Region<String, Object> createRegion(String regionName, RegionAttributes regionAttrs){ RegionFactory<String, Object> regionFactory = cache.createRegionFactory(defaultAttrss); Region<String, Object> region = regionFactory.create(regionName); regions.put(regionName, region); return region; } public static Region<String, Object> createRegion(String regionName){ RegionFactory<String, Object> regionFactory = cache.createRegionFactory(defaultAttrss); Region<String, Object> region = regionFactory.create(regionName); regions.put(regionName, region); return region; } public static void destroyRegion(String regionName){ Region<String, Object> region = cache.getRegion(regionName); region.localDestroyRegion(); regions.remove(regionName); } public static void putToRegion(String regionName, String key, Object value){ Region<String, Object> region = cache.getRegion(regionName); region.put(key, value); } public static void putAllToRegion(String regionName, Map<String, Object> rows){ Region<String, Object> region = cache.getRegion(regionName); region.putAll(rows); } public static Object deleteByKey(String regionName, String key){ Region<String, Object> region = cache.getRegion(regionName); Object result = region.destroy(key); return result; } public static Collection<Object> deleteByKeys(String regionName, Collection<String> keys){ Region<String, Object> region = cache.getRegion(regionName); Collection<Object> results = keys.stream().map((key) -> { return region.destroy(key);} ).collect(Collectors.toList()); return results; } public static Object getByKey(String regionName, String key){ Region<String, Object> region = cache.getRegion(regionName); Object result = region.get(key); return result; } public static Map<String, Object> getByKeys(String regionName, Collection<String> keys){ Region<String, Object> region = cache.getRegion(regionName); Map<String, Object> results = region.getAll(keys); return results; } public static Stream<Object> query(String regionName, String oql) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException{ Region<String, Object> region = cache.getRegion(regionName); RegionService service = region.getRegionService(); QueryService queryService = service.getQueryService(); Query query = queryService.newQuery("<trace> select max(table['age']) from /zm table where table['age'] >10"); SelectResults<Object> results = (SelectResults<Object>) query.execute(); Stream<Object> stream = results.stream(); return stream; } }
Test.java
Map<String, Object> rows = new HashMap<String, Object>(); Map<String, Object> row1 = new HashMap<String, Object>(); row1.put("name", "xiaozhao"); row1.put("age", 28); rows.put("xz", row1); Map<String, Object> row2 = new HashMap<String, Object>(); row2.put("name", "xiaomeng"); row2.put("age", 20); rows.put("xm", row2); String regionName = "zm"; InMemoryDataRepository.createRegion(regionName); InMemoryDataRepository.putAllToRegion(regionName, rows); String oql = "<trace> select max(table['age']) from /zm table where table['age'] >10"; Stream<Object> stream = InMemoryDataRepository.query(regionName, oql); stream.forEach(System.out::println);
相关文章推荐
- Java调用Geode
- 用java连接apache geode
- java的优点再谈!
- HTML、Swing还是XML,Java客户端工具选择?(三)
- sun 称 java 存在漏洞!
- 实 现JAVA 的 动 态 类 载 入 机 制
- 从C++到Java --理解面向对象是关键所在
- Borland Eyeing the Chasm Between Java and .NET
- Java.NET --一个基于Java的Microsoft.NET框架的实现
- 批判性地看待一种可行的表示技术:JavaServerPages servlet技术(下)
- 批判性地看待一种可行的表示技术:JavaServerPages servlet技术(上)
- PHP & Java(3)
- PHP & Java(2)
- PHP & Java(1)
- Java 101之线程基础
- JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署
- [导入]Java线程的深入探讨
- java小程序中鼠标事件的响应处理(包含右键、双击等)
- 关于java 的 Classpath全解
- Java代码编写的一般性指导