zoukankan      html  css  js  c++  java
  • Memcached 简单利用和简单了解(Mac的安装和使用)

    Memcached 是一种用于分布式应用的一种缓存机制。应用也比较广泛。这里来学习一下。


    首先Memcached 是分布式网站架构都需要用到的缓存机制。缓存就是服务器利用多余的空间上开辟了一个储存空间,在这片储存区域中,我们放入key-value形式的数据。这样的话,前端发来的请求在这片缓存中如果可以得到解决,就不要去访问数据库了。在Web中,最耗费时间的操作就是去数据库中查询,取出数据。如果一个界面,每次都要加载固定的信息,这些信息储存在数据库中,那么每次很多用户同时加载,就要耗费很长时间,但是把这些数据放到缓存里面,每次拿去就很快,因为Memcached的效率是O(1)的。


    好的,初步了解之后,就可以安装和使用了。

    下面是Mac的安装方法:

    用最简单的homebrew 来安装Memcached 十分的方便。

    执行 brew install memcached 静静的等待安装成功就好了。

    接下来在终端之中启动memcached

    启动memcached 命令参数如下

    memcached  启动服务器

    	-p 监听的端口
    	-l 连接的ip地址,默认是本机
    	-d start 启动memcached服务
    	-d stop|shutdown 关闭和正在运行的memcached服务
    	-d install 安装memcached服务
    	-u 以root身份运行
    	-m 最大内存的实用, 单位MB
    	-c 最大同时连接数
    	-h 显示帮助

     

     telnet 127.0.0.1 11211 连接服务。

    我们可以用memcached 几个简单命令:

    <command>  <key>  <flags>  <time> <bytes> 

    <value>

     

    command: set, add , replace

    key : 健值

    flags :健值对的整型参数,客户机使用它储存键值对的额外信息

    time: 在缓冲中保存的时间,0代表永远

    bytes : 在缓冲中的字节点

    value : 储存的值

     

    实际的例子:


    那么如何在程序中使用呢?网上有两种版本,第一种版本

    首先我们需要下载

    java_memcached-release_2.5.3.jar 

    导入之后:

    package com.memcached;
    
    import com.danga.MemCached.MemCachedClient;
    
    import com.danga.MemCached.SockIOPool;
    import com.sun.istack.internal.Pool;
    import bean.testbean;
    
    public class Memcached {
    	
    	protected static MemCachedClient mcc = new MemCachedClient();
    	
    	static{	
    	//设置缓存服务器列表
    	String[] servers = {
    			
    			"192.168.1.117:11211"
    			
    	};
    	
    	  // 创建一个Socked连接池实例
        SockIOPool pool = SockIOPool.getInstance();
        
        Integer[] weights={3};
     // 向连接池设置服务器和权重
        pool.setServers(servers);
        pool.setWeights(weights);
        
        pool.setNagle(false);
        pool.setSocketTO(3000);
        pool.setSocketConnectTO(0);
    
       // initialize the connection pool
        pool.initialize();
        
    	}
    	
    	public static void main(String args[]){
    		
    		 testbean bean=new testbean();  
    	     bean.setName("lulu");
    	     bean.setSex("girl");
    	     
    	     mcc.set("person", bean);
    
    		
    	     mcc.set("name","chenyongkang");
    	     
    	     
    	     testbean b =(testbean)mcc.get("person");
    	     
    		System.out.println("姓名:"+mcc.get("name"));
    		System.out.println("名字"+b.getName()+"  性别:"+b.getSex());
    	}
    	
    }
    

    这里,memcached 也可以储存bean实体类。

    实体类:

    package bean;
    import java.io.Serializable;
    
    public class testbean implements Serializable{
    	
    	private String name;
    	private String sex;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	
    
    }
    

    上面都是memcached 基本安装和使用。

    那么如果我们在分布式架构中怎么使用呢?

    这篇博客是一个很好的介绍:

    http://blog.csdn.net/lulidaitian/article/details/51712893

    1. 首先我们要知道memcached 的优势在哪里?如果单独一台服务器,单独的使用了memcached 。那么会得不偿失,速度反而被拖慢了。memcached 的优势是在分布式中。每一个分布式的服务器,都可以用特殊的算法去访问别的服务器中的缓存。这样利用分布式的服务器集群的多余内存,我们就可以发挥memcached的优势,建立一个有效的缓存机制。当然我们需要方法,让每个服务器了解,应该去找哪一台服务器中的缓存。

    2.我们需要知道哪些数据可以用memcached缓存。

    缓存只是用来储存常用信息,固定的信息。不要把数据库表整个存在缓存中,那样不是缓存的初衷,很多数据库也提供了缓存机制,所以无需用memcached.

  • 相关阅读:
    阿里巴巴开源的Asynchronous I/O Design and Implementation
    maven 出现错误 -source 1.5 中不支持 diamond 运算符
    Kafka设计解析(六)- Kafka高性能架构之道
    Kafka设计解析(七)- Kafka Stream
    flink如何动态支持依赖jar包提交
    Hbase技术笔记
    windows环境:idea或者eclipse指定用户名操作hadoop集群
    HBase源码实战:BufferedMutator
    HBase工具:如何查看HBase的HFile
    HBase源码实战:CreateRandomStoreFile
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228515.html
Copyright © 2011-2022 走看看