zoukankan      html  css  js  c++  java
  • Java 连接 Memcached 服务

    Windows 下安装 Memcached http://www.runoob.com/memcached/window-install-memcached.html

    通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务。

    telnet HOST PORT
    telnet 127.0.0.1 11211

    添加 Memcached jar 包

    <dependency>
        <groupId>net.spy</groupId>
        <artifactId>spymemcached</artifactId>
        <version>2.9.1</version>
    </dependency>
    

      以下程序假定 Memcached 服务的主机为 127.0.0.1,端口为 11211。如果是远程访问,记得在防火墙的入站规则中添加端口。

    public class MemcachedJava {
    	public static void main(String[] args) {
    
    		try {
    			// 连接本地的 Memcached 服务
    			MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
    			System.out.println("Connection to server sucessful.");
    
    			Future fo = mcc.set("memcached", 10, "memcached");// 添加数据
    			System.out.println("set status:" + fo.get());// 输出执行set方法后的状态
    			System.out.println("get - " + mcc.get("memcached"));// 使用get方法获取数据
    
    			fo = mcc.add("memcached", 10, "add");// 添加
    			System.out.println("add status:" + fo.get());// 输出执行add方法后的状态
    			System.out.println("add - " + mcc.get("memcached"));// 获取键对应的值
    
    			fo = mcc.replace("memcached", 10, "memcached replace");
    			System.out.println("replace status:" + fo.get());// 输出执行replace方法后的状态
    			System.out.println("replace - " + mcc.get("memcached"));// 获取键对应的值
    
    			fo = mcc.append("memcached", " append");// 对存在的key进行数据添加操作
    			System.out.println("append status:" + fo.get());// 输出执行 append方法后的状态
    			System.out.println("append - " + mcc.get("memcached"));// 获取键对应的值
    
    			fo = mcc.prepend("memcached", "prepend ");// 对存在的key进行数据添加操作
    			System.out.println("prepend status:" + fo.get());// 输出执行prepend方法后的状态
    			System.out.println("prepend - " + mcc.get("memcached"));// 获取键对应的值
    
    			CASValue casValue = mcc.gets("memcached");// 通过 gets 方法获取 CAS token(令牌)
    			System.out.println("CAS token - " + casValue);// 输出 CAS token(令牌) 值
    			CASResponse casresp = mcc.cas("memcached", casValue.getCas(), " CAS");// 尝试使用cas方法来更新数据
    			System.out.println("CAS Response - " + casresp);// 输出 CAS 响应信息
    			System.out.println("CAS - " + mcc.get("memcached"));// 输出值
    
    			fo = mcc.delete("memcached");// 对存在的key进行数据添加操作
    			System.out.println("delete status:" + fo.get());// 输出执行 delete方法后的状态
    			System.out.println("delete - " + mcc.get("memcached"));// 获取键对应的值
    
    			Future number = mcc.set("number", 10, "1000");// 添加数字值
    			System.out.println("set status:" + number.get());// 输出执行 set 方法后的状态
    			System.out.println("incr - " + mcc.incr("number", 100));// 自增并输出
    			System.out.println("decr - " + mcc.decr("number", 101));// 自减并输出
    			
    			// 关闭连接
    			mcc.shutdown();
    		}
    		catch (Exception ex) {
    			System.out.println(ex.getMessage());
    		}
    	}
    }
    

     

    set 命令用于将 value(数据值) 存储在指定的 key(键) 中。如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

    add 命令用于将 value(数据值) 存储在指定的 key(键) 中。如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同。

    replace 命令用于替换已存在的 key(键) 的 value(数据值)。如果 key 不存在,则替换失败。

    append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。

    prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。

    CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。


    get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。

    gets 命令获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空。

    delete 命令用于删除已存在的 key(键)。

    incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR。

    stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等。
    stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。
    stats slabs 命令用于显示各个slab的信息,包括chunk的大小、数目、使用情况等。
    stats sizes 命令用于显示所有item的大小和个数。该信息返回两列,第一列是 item 的大小,第二列是 item 的个数。
    flush_all 命令用于清理缓存中的所有 key=>value(键=>值) 对。该命令提供了一个可选参数 time,用于在制定的时间后执行清理缓存操作。

     

    转自http://www.runoob.com/memcached/java-memcached.html

  • 相关阅读:
    7月24日学习
    7月23日学习
    7月22日学习
    7月21日学习
    【编程技巧】applicationContext.xml 里面可配置bean和数据库地址
    【编程技巧】 输入框只能输入中文
    【开发技术】Beyond Compare
    【编程技巧】Ext.QuickTips.init();
    【开发技术】常用正则表达式大全!(例如:匹配中文、匹配html)
    【编程技巧】addSubview和insertSubview的区别
  • 原文地址:https://www.cnblogs.com/RealWorld/p/9214292.html
Copyright © 2011-2022 走看看