Java 连接 Memcached 服务


使用 Java 程序连接 Memcached,需要在你的 classpath 中添加 Memcached jar 包。

本站 jar 包下载地址:spymemcached-2.10.3.jar(地下有下载地址)

以下程序假定 Memcached 服务的主机为 127.0.0.1,端口为 11211。

连接实例

Java 连接 Memcached

  1. import net.spy.memcached.MemcachedClient;
  2. import java.net.*;
  3.  
  4.  
  5. public class MemcachedJava {
  6.    public static void main(String[] args) {
  7.       try{
  8.          // 本地连接 Memcached 服务
  9.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  10.          System.out.println("Connection to server sucessful.");
  11.          
  12.          // 关闭连接
  13.          mcc.shutdown();
  14.          
  15.       }catch(Exception ex){
  16.          System.out.println( ex.getMessage() );
  17.       }
  18.    }
  19. }

该程序中我们使用 InetSocketAddress 连接 IP 为 127.0.0.1 端口 为 11211 的 memcached 服务。

执行以上代码,如果连接成功会输出以下信息:

  1. Connection to server successful.

set 操作实例

以下使用 java.util.concurrent.Future 来存储数据

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try{
  10.          // 连接本地的 Memcached 服务
  11.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  12.          System.out.println("Connection to server sucessful.");
  13.       
  14.          // 存储数据
  15.          Future fo = mcc.set("runoob", 900, "Free Education");
  16.       
  17.          // 查看存储状态
  18.          System.out.println("set status:" + fo.get());
  19.          
  20.          // 输出值
  21.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  22.  
  23.          // 关闭连接
  24.          mcc.shutdown();
  25.          
  26.       }catch(Exception ex){
  27.          System.out.println( ex.getMessage() );
  28.       }
  29.    }
  30. }

执行程序,输出结果为:

  1. Connection to server successful.
  2. set status:true
  3. runoob value in cache - Free Education

add 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try{
  10.    
  11.          // 连接本地的 Memcached 服务
  12.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  13.          System.out.println("Connection to server sucessful.");
  14.  
  15.          // 添加数据
  16.          Future fo = mcc.set("runoob", 900, "Free Education");
  17.  
  18.          // 打印状态
  19.          System.out.println("set status:" + fo.get());
  20.  
  21.          // 输出
  22.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  23.  
  24.          // 添加
  25.          Future fo = mcc.add("runoob", 900, "memcached");
  26.  
  27.          // 打印状态
  28.          System.out.println("add status:" + fo.get());
  29.  
  30.          // 添加新key
  31.          fo = mcc.add("codingground", 900, "All Free Compilers");
  32.  
  33.          // 打印状态
  34.          System.out.println("add status:" + fo.get());
  35.          
  36.          // 输出
  37.          System.out.println("codingground value in cache - " + mcc.get("codingground"));
  38.  
  39.          // 关闭连接
  40.          mcc.shutdown();
  41.          
  42.       }catch(Exception ex){
  43.          System.out.println(ex.getMessage());
  44.       }
  45.    }
  46. }

replace 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try {
  10.          //连接本地的 Memcached 服务
  11.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  12.          System.out.println("Connection to server sucessful.");
  13.  
  14.          // 添加第一个 key=》value 对
  15.          Future fo = mcc.set("runoob", 900, "Free Education");
  16.  
  17.          // 输出执行 add 方法后的状态
  18.          System.out.println("add status:" + fo.get());
  19.  
  20.          // 获取键对应的值
  21.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  22.  
  23.          // 添加新的 key
  24.          fo = mcc.replace("runoob", 900, "Largest Tutorials' Library");
  25.  
  26.          // 输出执行 set 方法后的状态
  27.          System.out.println("replace status:" + fo.get());
  28.  
  29.          // 获取键对应的值
  30.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  31.  
  32.          // 关闭连接
  33.          mcc.shutdown();
  34.          
  35.       }catch(Exception ex){
  36.          System.out.println( ex.getMessage() );
  37.       }
  38.    }
  39. }

append 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try{
  10.    
  11.          // 连接本地的 Memcached 服务
  12.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  13.          System.out.println("Connection to server sucessful.");
  14.  
  15.          // 添加数据
  16.          Future fo = mcc.set("runoob", 900, "Free Education");
  17.  
  18.          // 输出执行 set 方法后的状态
  19.          System.out.println("set status:" + fo.get());
  20.  
  21.          // 获取键对应的值
  22.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  23.  
  24.          // 对存在的key进行数据添加操作
  25.          Future fo = mcc.append("runoob", 900, " for All");
  26.  
  27.          // 输出执行 set 方法后的状态
  28.          System.out.println("append status:" + fo.get());
  29.          
  30.          // 获取键对应的值
  31.          System.out.println("runoob value in cache - " + mcc.get("codingground"));
  32.  
  33.          // 关闭连接
  34.          mcc.shutdown();
  35.          
  36.       }catch(Exception ex)
  37.          System.out.println(ex.getMessage());
  38.    }
  39. }

prepend 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try{
  10.    
  11.          // 连接本地的 Memcached 服务
  12.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  13.          System.out.println("Connection to server sucessful.");
  14.  
  15.          // 添加数据
  16.          Future fo = mcc.set("runoob", 900, "Education for All");
  17.  
  18.          // 输出执行 set 方法后的状态
  19.          System.out.println("set status:" + fo.get());
  20.  
  21.          // 获取键对应的值
  22.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  23.  
  24.          // 对存在的key进行数据添加操作
  25.          Future fo = mcc.prepend("runoob", 900, "Free ");
  26.  
  27.          // 输出执行 set 方法后的状态
  28.          System.out.println("prepend status:" + fo.get());
  29.          
  30.          // 获取键对应的值
  31.          System.out.println("runoob value in cache - " + mcc.get("codingground"));
  32.  
  33.          // 关闭连接
  34.          mcc.shutdown();
  35.          
  36.       }catch(Exception ex)
  37.          System.out.println(ex.getMessage());
  38.    }
  39. }

CAS 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.CASValue;
  5. import net.spy.memcached.CASResponse;
  6. import net.spy.memcached.MemcachedClient;
  7.  
  8. public class MemcachedJava {
  9.    public static void main(String[] args) {
  10.    
  11.       try{
  12.    
  13.          // 连接本地的 Memcached 服务
  14.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  15.          System.out.println("Connection to server sucessful.");
  16.  
  17.          // 添加数据
  18.          Future fo = mcc.set("runoob", 900, "Free Education");
  19.  
  20.          // 输出执行 set 方法后的状态
  21.          System.out.println("set status:" + fo.get());
  22.             
  23.          // 使用 get 方法获取数据
  24.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  25.  
  26.          // 通过 gets 方法获取 CAS token(令牌)
  27.          CASValue casValue = mcc.gets("runoob");
  28.  
  29.          // 输出 CAS token(令牌) 值
  30.          System.out.println("CAS token - " + casValue);
  31.  
  32.          // 尝试使用cas方法来更新数据
  33.          CASResponse casresp = mcc.cas("runoob", casValue.getCas(), 900, "Largest Tutorials-Library");
  34.          
  35.          // 输出 CAS 响应信息
  36.          System.out.println("CAS Response - " + casresp);
  37.  
  38.          // 输出值
  39.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  40.  
  41.          // 关闭连接
  42.          mcc.shutdown();
  43.          
  44.       }catch(Exception ex)
  45.          System.out.println(ex.getMessage());
  46.    }
  47. }

get 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try{
  10.    
  11.          // 连接本地的 Memcached 服务
  12.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  13.          System.out.println("Connection to server sucessful.");
  14.  
  15.          // 添加数据
  16.          Future fo = mcc.set("runoob", 900, "Free Education");
  17.  
  18.          // 输出执行 set 方法后的状态
  19.          System.out.println("set status:" + fo.get());
  20.  
  21.          // 使用 get 方法获取数据
  22.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  23.  
  24.          // 关闭连接
  25.          mcc.shutdown();
  26.          
  27.       }catch(Exception ex)
  28.          System.out.println(ex.getMessage());
  29.    }
  30. }

gets 操作实例、CAS

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.CASValue;
  5. import net.spy.memcached.CASResponse;
  6. import net.spy.memcached.MemcachedClient;
  7.  
  8. public class MemcachedJava {
  9.    public static void main(String[] args) {
  10.    
  11.       try{
  12.    
  13.          // 连接本地的 Memcached 服务
  14.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  15.          System.out.println("Connection to server sucessful.");
  16.  
  17.          // 添加数据
  18.          Future fo = mcc.set("runoob", 900, "Free Education");
  19.  
  20.          // 输出执行 set 方法后的状态
  21.          System.out.println("set status:" + fo.get());
  22.             
  23.          // 从缓存中获取键为 runoob 的值
  24.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  25.  
  26.          // 通过 gets 方法获取 CAS token(令牌)
  27.          CASValue casValue = mcc.gets("runoob");
  28.  
  29.          // 输出 CAS token(令牌) 值
  30.          System.out.println("CAS value in cache - " + casValue);
  31.  
  32.          // 关闭连接
  33.          mcc.shutdown();
  34.          
  35.       }catch(Exception ex)
  36.          System.out.println(ex.getMessage());
  37.    }
  38. }

delete 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try{
  10.    
  11.          // 连接本地的 Memcached 服务
  12.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  13.          System.out.println("Connection to server sucessful.");
  14.  
  15.          // 添加数据
  16.          Future fo = mcc.set("runoob", 900, "World's largest online tutorials library");
  17.  
  18.          // 输出执行 set 方法后的状态
  19.          System.out.println("set status:" + fo.get());
  20.  
  21.          // 获取键对应的值
  22.          System.out.println("runoob value in cache - " + mcc.get("runoob"));
  23.  
  24.          // 对存在的key进行数据添加操作
  25.          Future fo = mcc.delete("runoob");
  26.  
  27.          // 输出执行 delete 方法后的状态
  28.          System.out.println("delete status:" + fo.get());
  29.  
  30.          // 获取键对应的值
  31.          System.out.println("runoob value in cache - " + mcc.get("codingground"));
  32.  
  33.          // 关闭连接
  34.          mcc.shutdown();
  35.          
  36.       }catch(Exception ex)
  37.          System.out.println(ex.getMessage());
  38.    }
  39. }

Incr/Decr 操作实例

  1. import java.net.InetSocketAddress;
  2. import java.util.concurrent.Future;
  3.  
  4. import net.spy.memcached.MemcachedClient;
  5.  
  6. public class MemcachedJava {
  7.    public static void main(String[] args) {
  8.    
  9.       try{
  10.    
  11.          // 连接本地的 Memcached 服务
  12.          MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  13.          System.out.println("Connection to server sucessful.");
  14.  
  15.          // 添加数字值
  16.          Future fo = mcc.set("number", 900, "1000");
  17.  
  18.          // 输出执行 set 方法后的状态
  19.          System.out.println("set status:" + fo.get());
  20.  
  21.          // 获取键对应的值
  22.          System.out.println("value in cache - " + mcc.get("number"));
  23.  
  24.          // 自增并输出
  25.          System.out.println("value in cache after increment - " + mcc.incr("number", 111));
  26.  
  27.          // 自减并输出
  28.          System.out.println("value in cache after decrement - " + mcc.decr("number", 112));
  29.  
  30.          // 关闭连接
  31.          mcc.shutdown();
  32.          
  33.       }catch(Exception ex)
  34.          System.out.println(ex.getMessage());
  35.    }
  36. }

下载地址