zoukankan      html  css  js  c++  java
  • memcached学习——常用命令+基于java客户端的3种简单实现(二)

      常用命令:

      memcached设计的原则就是简单,所以支持的命令也不是特别多~

      1.查看memcached的状态,主要用于分析内存的使用状况、优化内存分配等

      stats	  查看memcached的运行状态
      stats items     查看items的状态
      stats slabs     查看slabs的内存分配状态,注重点在性能而非计数
      stats sizes     查看
    

      2.存

      set                存值,若key已存在会覆盖原值
      add               存值,若key已存在保存失败
      replace           替换原值,若key不存在替换失败
      append	     在原value的末尾上追加内容
      prepend           在原value的头部追加内容
      cas(check and set) 检索并设置值     
      incr               取值自增  
      decr              取值自减    

      3.取

      get key        获取某个key的值
      gets key1 key2   获取多个key的值

      4.删

      delete key  删除某个key
      flush_all   清除所有存储的内容,不会释放内存
    

      

      基于java客户端的三种实现

      1.使用最久、最广泛的memcached client for java

    package com.wang.client.danga;
    
    import com.danga.MemCached.MemCachedClient;
    import com.danga.MemCached.SockIOPool;
    
    /**
     * memcached client for java 较早推出,应用广泛、运行稳定
     * 下载地址:https://cloud.github.com/downloads/gwhalin/Memcached-Java-Client/java_memcached-release_2.6.6.zip
     * 解压出依赖jar包:commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar
     * @author wlyfree
     */
    public class MemcachedClientForJava_Danga_Demo {
    
    	public static void main(String[] args) {
    		MemCachedClient client = new MemCachedClient();
    		// 初始化SockIOPool,管理memcached连接池
    		SockIOPool pool = SockIOPool.getInstance();
    		// 配置
    		String[] servers = new String[] { "10.90.11.142:11211",
    				"10.90.11.142:11212", "10.90.11.142:11213" };
    		pool.setServers(servers);
    		pool.setFailover(true);
    		pool.setInitConn(10); // 设置初始连接
    		pool.setMinConn(5);// 设置最小连接
    		pool.setMaxConn(250); // 设置最大连接
    		pool.setMaxIdle(1000 * 60 * 60 * 3); // 设置每个连接最大空闲时间3个小时
    		pool.setMaintSleep(30);
    		pool.setNagle(false);
    		pool.setSocketTO(3000);
    		pool.setAliveCheck(true);
    		pool.initialize();
    		//测试
    		System.out.println(client.add("aa", "11"));
    		System.out.println(client.get("aa"));
    		System.out.println(client.set("aa", "22"));
    		System.out.println(client.get("aa"));
    		System.out.println(client.add("aa", "33"));
    		System.out.println(client.get("aa"));
    		System.out.println(client.delete("aa"));
    		System.out.println(client.get("aa"));
    	}
    }
    

      2.spymemcached

    package com.wang.client.spy;
    
    import java.io.IOException;
    import java.net.InetSocketAddress;
    import net.spy.memcached.MemcachedClient;
    import net.spy.memcached.internal.OperationFuture;
    
    /**
     * 性能稳定、稳定性略差
     * 依赖jar包:spymemcached-2.10.2.jar
     * 当集群内某节点down机,数据不会hash到新节点,而是直接失败。修改源码可能会修复此问题:http://colobu.com/2015/11/24/One-spymemcached-issue-when-one-node-fails/
     * 总结完了,感觉这么不稳定的东西应该没人在生产环境使用吧!
     * @author wlyfree
     */
    public class SpyMemcached_Demo {
    	public static void main(String[] args) {
    		try {
    			MemcachedClient client = new MemcachedClient(new InetSocketAddress("10.90.11.142", 11211));
    			OperationFuture<Boolean> operationFuture = client.add("spy", 0, "spy1");
    			System.out.println(operationFuture.getStatus() + "==========" + client.get("spy"));
    			operationFuture = client.set("spy", 0, "spy2");
    			System.out.println(operationFuture.getStatus() + "==========" + client.get("spy"));
    			operationFuture = client.add("spy", 0, "spy3");
    			System.out.println(operationFuture.getStatus() + "==========" + client.get("spy"));
    			operationFuture = client.delete("spy");
    			System.out.println(operationFuture.getStatus() + "==========" + client.get("spy"));
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
    }
    

      3.xmemcached

    package com.wang.client.xmemcached;
    
    import net.rubyeye.xmemcached.MemcachedClient;
    import net.rubyeye.xmemcached.XMemcachedClient;
    
    /**
     * 基于nio实现,性能好,效率高,资源耗费少
    * 依赖jar包:xmemcached-版本号.jar * 程序托管到github了:https://github.com/killme2008/xmemcached/ * 作者:原淘宝某几位大神 * @author wlyfree */ public class xmemcached_Demo { public static void main(String[] args) { try { MemcachedClient client = new XMemcachedClient("10.90.11.142",11211); String key = "xmemcached"; System.out.println(client.add(key,0,"x1")); System.out.println(client.get(key)); System.out.println(client.set(key,0,"x2")); System.out.println(client.get(key)); System.out.println(client.add(key,0,"x3")); System.out.println(client.get(key)); System.out.println(client.delete(key)); System.out.println(client.get(key)); } catch (Exception e) { e.printStackTrace(); } } }

      

  • 相关阅读:
    python常识系列17-->利用Faker模块造测试数据
    python常识系列16-->python自带的Mock模块使用
    python常识系列15-->python利用xlrd处理合并单元格
    python常识系列14-->python通过jpype模块调用jar包
    杂七杂八的问题处理01--mac下的eclipse默认不提供代码联想功能
    httprunner踩坑记03-->debugtalk.py中的方法传参
    httprunner踩坑记02-->利用parameters参数进行参数化
    vue新建项目一直在downloading template转,最后超时
    vue图片加载出错显示默认占位图片
    修改input复选框样式
  • 原文地址:https://www.cnblogs.com/douJiangYouTiao888/p/6267478.html
Copyright © 2011-2022 走看看