文档

Java: Spymemcache

更新时间:
一键部署

客户端

客户端介绍请参见spymemcached简介

客户端下载地址请参见下载spymemcached

Java 代码示例

  1. 准备 Java 开发环境。登录已有的阿里云 ECS 服务器,在上面安装 Java JDK 和常用的 IDE(比如 Eclipse)。

    Java JDK 下载地址

    Eclipse(下载地址1下载地址2

  2. 第一个代码示例如下,把里面的 Java 代码复制到 Eclipse Project 里面去。

    注意:此时的代码是编译不成功的,因为要想调用 Memcache 缓存服务还需要一个第三方提供的 jar 包下载地址。添加这个 jar 包之后,代码就能编译通过了。

    OcsSample1.java 代码示例 (需要用户名和密码)

    1. import java.io.IOException;
    2. import java.util.concurrent.ExecutionException;
    3. import net.spy.memcached.AddrUtil;
    4. import net.spy.memcached.ConnectionFactoryBuilder;
    5. import net.spy.memcached.ConnectionFactoryBuilder.Protocol;
    6. import net.spy.memcached.MemcachedClient;
    7. import net.spy.memcached.auth.AuthDescriptor;
    8. import net.spy.memcached.auth.PlainCallbackHandler;
    9. import net.spy.memcached.internal.OperationFuture;
    10. public class OcsSample1 {
    11. public static void main(String[] args) {
    12. final String host = "xxxxxxxx.m.yyyyyyyyyy.ocs.aliyuncs.com";//控制台上的“内网地址”
    13. final String port ="11211"; //默认端口 11211,不用改
    14. final String username = "xxxxxxxxx";//控制台上的“实例ID”,新版ocs的username可以置空
    15. final String password = "my_password";//邮件中提供的“密码”
    16. MemcachedClient cache = null;
    17. try {
    18. AuthDescriptor ad = new AuthDescriptor(new String[]{"PLAIN"}, new PlainCallbackHandler(username, password));
    19. cache = new MemcachedClient(
    20. new ConnectionFactoryBuilder().setProtocol(Protocol.BINARY)
    21. .setAuthDescriptor(ad)
    22. .build(),
    23. AddrUtil.getAddresses(host + ":" + port));
    24. System.out.println("OCS Sample Code");
    25. //向OCS中存一个key为"ocs"的数据,便于后面验证读取数据
    26. String key = "ocs";
    27. String value = "Open Cache Service, from www.Aliyun.com";
    28. int expireTime = 1000; // 过期时间,单位s; 从写入时刻开始计时,超过expireTime s后,该数据过期失效,无法再读出;
    29. OperationFuture<Boolean> future = cache.set(key, expireTime, value);
    30. future.get(); // spymemcached set()是异步的,future.get() 等待cache.set()操作结束,也可以不等待,用户根据自己需求选择
    31. //向OCS中存若干个数据,随后可以在OCS控制台监控上看到统计信息
    32. for(int i=0;i<100;i++){
    33. key="key-"+i;
    34. value="value-"+i;
    35. //执行set操作,向缓存中存数据
    36. expireTime = 1000; // 过期时间,单位s
    37. future = cache.set(key, expireTime, value);
    38. future.get(); // 确保之前(cache.set())操作已经结束
    39. }
    40. System.out.println("Set操作完成!");
    41. //执行get操作,从缓存中读数据,读取key为"ocs"的数据
    42. System.out.println("Get操作:"+cache.get(key));
    43. } catch (IOException e) {
    44. e.printStackTrace();
    45. } catch (InterruptedException e) {
    46. e.printStackTrace();
    47. } catch (ExecutionException e) {
    48. e.printStackTrace();
    49. }
    50. if (cache != null) {
    51. cache.shutdown();
    52. }
    53. }//eof
    54. }

    OcsSample2.java 代码示例(不需要用户名和密码)

    1. import java.io.IOException;
    2. import java.util.concurrent.ExecutionException;
    3. import net.spy.memcached.AddrUtil;
    4. import net.spy.memcached.BinaryConnectionFactory;
    5. import net.spy.memcached.MemcachedClient;
    6. import net.spy.memcached.internal.OperationFuture;
    7. public class OcsSample2 {
    8. public static void main(String[] args) {
    9. final String host = "xxxxxxxx.m.yyyyyyyyyy.ocs.aliyuncs.com"; //控制台上的“内网地址”
    10. final String port = "11211"; //默认端口 11211,不用改
    11. MemcachedClient cache = null;
    12. try {
    13. cache = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses(host + ":" + port));
    14. System.out.println("OCS Sample Code");
    15. //向OCS中存一个key为"ocs"的数据,便于后面验证读取数据
    16. String key = "ocs";
    17. String value = "Open Cache Service, from www.Aliyun.com";
    18. int expireTime = 1000; // 过期时间,单位s; 从写入时刻开始计时,超过 expireTime s后,该数据过期失效,无法再读出;
    19. OperationFuture<Boolean> future = cache.set(key, expireTime, value);
    20. future.get();
    21. //向OCS中存若干个数据,随后可以在OCS控制台监控上看到统计信息
    22. for (int i = 0; i < 100; i++) {
    23. key = "key-" + i;
    24. value = "value-" + i;
    25. //执行set操作,向缓存中存数据
    26. expireTime = 1000; // 过期时间,单位s
    27. future = cache.set(key, expireTime, value);
    28. future.get();
    29. }
    30. System.out.println("Set操作完成!");
    31. //执行get操作,从缓存中读数据,读取key为"ocs"的数据
    32. System.out.println("Get操作:" + cache.get(key));
    33. } catch (IOException e) {
    34. e.printStackTrace();
    35. } catch (InterruptedException e) {
    36. e.printStackTrace();
    37. } catch (ExecutionException e) {
    38. e.printStackTrace();
    39. }
    40. if (cache != null) {
    41. cache.shutdown();
    42. }
    43. }//eof
    44. }
  3. 在 Eclipse 里面打开的 OcsSample1.java,根据自己的实例信息修改几个地方。

    每个人买到的云数据库 Memcache 实例的 ID 都是不重复的,其对应的阿里云内网地址也是独一无二的,这些信息都在云数据库 Memcache 控制台上显示出来。在同自己的云数据库 Memcache 实例建立连接的时候,需要根据这些信息修改 OcsSample1.java 中的对应地方。

  4. 信息修改完毕,可以运行自己的程序了。运行 main 函数,会在 Eclipse 下面的 console 窗口看到下面这样的结果(请忽略可能出现的红色 INFO 调试信息)。

    1. OCS Sample Code
    2. Set操作完成!
    3. Get操作: Open Cache Service, from www.Aliyun.com