Java: Spymemcache
更新时间:
客户端
客户端介绍请参见spymemcached简介。
客户端下载地址请参见下载spymemcached。
Java代码示例
准备Java开发环境。登录已有的阿里云ECS服务器,在上面安装Java JDK和常用的IDE(比如 Eclipse)。
Java JDK: 下载地址
第一个代码示例如下,把里面的Java代码复制到Eclipse Project里面去。
说明注意:此时的代码是编译不成功的,因为要想调用Memcache缓存服务还需要一个第三方提供的jar 包下载地址。添加这个jar包之后,代码就能编译通过了。
OcsSample1.java代码示例 (需要用户名和密码)
import java.io.IOException; import java.util.concurrent.ExecutionException; import net.spy.memcached.AddrUtil; import net.spy.memcached.ConnectionFactoryBuilder; import net.spy.memcached.ConnectionFactoryBuilder.Protocol; import net.spy.memcached.MemcachedClient; import net.spy.memcached.auth.AuthDescriptor; import net.spy.memcached.auth.PlainCallbackHandler; import net.spy.memcached.internal.OperationFuture; public class OcsSample1 { public static void main(String[] args) { final String host = "xxxxxxxx.m.yyyyyyyyyy.ocs.aliyuncs.com";//控制台上的“内网地址” final String port ="11211"; //默认端口 11211,不用改 final String username = "xxxxxxxxx";//控制台上的“实例ID”,新版ocs的username可以置空 final String password = "my_password";//邮件中提供的“密码” MemcachedClient cache = null; try { AuthDescriptor ad = new AuthDescriptor(new String[]{"PLAIN"}, new PlainCallbackHandler(username, password)); cache = new MemcachedClient( new ConnectionFactoryBuilder().setProtocol(Protocol.BINARY) .setAuthDescriptor(ad) .build(), AddrUtil.getAddresses(host + ":" + port)); System.out.println("OCS Sample Code"); //向OCS中存一个key为"ocs"的数据,便于后面验证读取数据 String key = "ocs"; String value = "Open Cache Service, from www.Aliyun.com"; int expireTime = 1000; // 过期时间,单位s; 从写入时刻开始计时,超过expireTime s后,该数据过期失效,无法再读出; OperationFuture<Boolean> future = cache.set(key, expireTime, value); future.get(); // spymemcached set()是异步的,future.get() 等待cache.set()操作结束,也可以不等待,用户根据自己需求选择 //向OCS中存若干个数据,随后可以在OCS控制台监控上看到统计信息 for(int i=0;i<100;i++){ key="key-"+i; value="value-"+i; //执行set操作,向缓存中存数据 expireTime = 1000; // 过期时间,单位s future = cache.set(key, expireTime, value); future.get(); // 确保之前(cache.set())操作已经结束 } System.out.println("Set操作完成!"); //执行get操作,从缓存中读数据,读取key为"ocs"的数据 System.out.println("Get操作:"+cache.get(key)); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } if (cache != null) { cache.shutdown(); } }//eof }
OcsSample2.java代码示例(不需要用户名和密码)
import java.io.IOException; import java.util.concurrent.ExecutionException; import net.spy.memcached.AddrUtil; import net.spy.memcached.BinaryConnectionFactory; import net.spy.memcached.MemcachedClient; import net.spy.memcached.internal.OperationFuture; public class OcsSample2 { public static void main(String[] args) { final String host = "xxxxxxxx.m.yyyyyyyyyy.ocs.aliyuncs.com"; //控制台上的“内网地址” final String port = "11211"; //默认端口 11211,不用改 MemcachedClient cache = null; try { cache = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses(host + ":" + port)); System.out.println("OCS Sample Code"); //向OCS中存一个key为"ocs"的数据,便于后面验证读取数据 String key = "ocs"; String value = "Open Cache Service, from www.Aliyun.com"; int expireTime = 1000; // 过期时间,单位s; 从写入时刻开始计时,超过 expireTime s后,该数据过期失效,无法再读出; OperationFuture<Boolean> future = cache.set(key, expireTime, value); future.get(); //向OCS中存若干个数据,随后可以在OCS控制台监控上看到统计信息 for (int i = 0; i < 100; i++) { key = "key-" + i; value = "value-" + i; //执行set操作,向缓存中存数据 expireTime = 1000; // 过期时间,单位s future = cache.set(key, expireTime, value); future.get(); } System.out.println("Set操作完成!"); //执行get操作,从缓存中读数据,读取key为"ocs"的数据 System.out.println("Get操作:" + cache.get(key)); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } if (cache != null) { cache.shutdown(); } }//eof }
在Eclipse里面打开的OcsSample1.java,根据自己的实例信息修改几个地方。
每个人买到的云数据库Memcache实例的ID都是不重复的,其对应的阿里云内网地址也是独一无二的,这些信息都在云数据库Memcache控制台上显示出来。在同自己的云数据库Memcache实例建立连接的时候,需要根据这些信息修改OcsSample1.java中的对应地方。
信息修改完毕,可以运行自己的程序了。运行main函数,会在Eclipse下面的console窗口看到下面这样的结果(请忽略可能出现的红色INFO调试信息)。
OCS Sample Code Set操作完成! Get操作: Open Cache Service, from www.Aliyun.com
文档内容是否对您有帮助?