Memcached是高性能的分布式内存缓存服务器,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等, 由国外社区网站 LiveJournal 的开发团队开发。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

LiveJournal 团队开发了包括 Memcached、MogileFS、Perlbal 等不错的开源项目。

 

Memcached的主要特点

•基于C/S架构,协议简单

•基于libevent的事件处理

•libevent: http://www.monkey.org/~provos/libevent/
安装
•基于libevent事件处理机制 http://www.monkey.org/~provos/libevent/
–# tar zxvf libevent-2.0.21-stable.tar.gz
–./configure --prefix=/usr/local
–make
–sudo make install
•memcached: http://memcached.org/

# tar zxvf memcached-1.4.15.tar.gz

–./configure --with-libevent=/usr/local
–make
–make install
 
其他说明,

在 Memcached 中可以保存的item数据量是没有限制的,只要内存足够

Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启进程

最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量

REALTIME_MAXDELTA 60*60*24*30 控制

最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制

单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进

行控制,它是默认的slab大小

最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过settings.maxconns=1024 进行控制

Memcached客户端 参考: http://code.google.com/p/memcached/wiki/Clients

memcached 搭建

在windows2007服务器中安装memcached首先要看服务器所用系统是32位的还是64位的,64位系统可能会需要一个MSVCR71.DLL动态链接文件,

该文件在memcached-1.2.5-win32-bin解压包中就有,更高版本的包已解决了这个问题,在windows2007中由于安全性的提高,

在命令行中执行memcached.exe -d install将会提示你服务安装失败或服务已安装。这样你以管理员的身份打开命令行,可以解决。

Memcached服务器的配置过程 
1.下载memcached-1.4.5-win32.zip包

下载地址:http://download.csdn.net/   (回头我给一个百度网盘地址)

2.用管理员身份打开cmd >cd memcached
>memcached-1.4.5.exe -d install  安装memcached缓冲服务
>memcached-1.4.5.exe -d start 开启memcached服务,默认端口为11211,内存分配为64MB,块大小增长因子1.25.最大同时连接数为1024,最小分配空间为48
>memcached-1.4.5.exe -d runservice -l 127.0.0.1 -m 2000 -c 1024 -p 11255

下面3.其实可以不作,我们就是用默认的端口等就合适

3.在命令行下可能不会生效所以得修改注册表 开始-->运行-->regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 中的
ImagePath项,原值为"d:\memcached\memcached-1.4.5.exe" -d runservice ,在其后加上 -p 11255 -U 11255 -m 2000 -c 1024 -f 1.25 -n 48 退出

4.右击我的电脑-->属性-->管理-->服务-->memcached Service 将服务重启。 
5.测试服务器
开启telnet功能,进入命令行模式,输入telnet 192.168.1.200 11255 Stats 查看memcached的状态。

Memcache 在java客户端的配置过程

1.下载java_memcached-release_2.5.1.jar包

2.将java_memcached-release_2.5.1.jar包复制到JAVA项目的lib目录下,然后我们编写代码进行测试。

import java.util.Date;
import com.danga.MemCached.MemCachedClient;

import com.danga.MemCached.SockIOPool;

public class MemCachedManager { 
    // 创建全局的唯一实例
    protected static MemCachedClient mcc = new MemCachedClient(); 
    protected static MemCachedManager memCachedManager = new MemCachedManager();

   // 设置与缓存服务器的连接池

   static {
        // 服务器列表和其权重
        String[] servers = { "192.168.1.200:11255" };

   Integer[] weights = { 3 };

// 获取socke连接池的实例对象
        SockIOPool pool = SockIOPool.getInstance();

// 设置服务器信息
       pool.setServers(servers);

pool.setWeights(weights);

 

 // 设置初始连接数、最小和最大连接数以及最大处理时间

pool.setInitConn(5);

pool.setMinConn(5);

pool.setMaxConn(250);
      pool.setMaxIdle(1000 * 60 * 60 * 6);

// 设置主线程的睡眠时间

pool.setMaintSleep(30); 
     // 设置TCP的参数,连接超时等

pool.setNagle(false);

pool.setSocketTO(3000);

pool.setSocketConnectTO(0);

// 初始化连接池

pool.initialize();

// 压缩设置,超过指定大小(单位为K)的数据都会被压缩

mcc.setCompressEnable(true);
      mcc.setCompressThreshold(64 * 1024);


    /**
     * 保护型构造方法,不允许实例化!

*/
    protected MemCachedManager() { 
    }

/**
     * 获取唯一实例
     */
    public static MemCachedManager getInstance() {

return memCachedManager;

}

/**
     * 添加一个指定的值到缓存中.      * 
     * @param key

* @param value

* @return

*/
    public boolean add(String key, Object value) {

return mcc.add(key, value);


    public boolean add(String key, Object value, Date expiry) {

return mcc.add(key, value, expiry);


    public boolean replace(String key, Object value) {

return mcc.replace(key, value);

 } 
    public boolean replace(String key, Object value, Date expiry) {

return mcc.replace(key, value, expiry);


    /**
     * 根据指定的关键字获取对象.
     * @param key

* @return

*/
    public Object get(String key) {

    return mcc.get(key);

}

 public static void main(String[] args) {

MemCachedManager cache = MemCachedManager.getInstance();

cache.add("hello", 234);

System.out.print("get value : " + cache.get("hello"));

}

}

3.测试运行状态。

Memcached-高性能的分布式内存缓存服务器的更多相关文章

  1. Spring Boot集成Hazelcast实现集群与分布式内存缓存

    Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸如Map,Queue,ExecutorService,Lock和JCach ...

  2. memcached基于socket访问memcache缓存服务器

    memcached基于socket访问memcache缓存服务器 操作memcache常用三种方法: .memcache基于php_memcache.dll扩展(php扩展) .memcached基于 ...

  3. 高性能的分布式内存对象缓存系统Memcached

    Memcached概述   什么是Memcached? 先看看下面几个概念: Memory:内存存储,不言而喻,速度快,对于内存的要求高,不指出的话所缓存的内容非持久化.对于CPU要求很低,所以常常采 ...

  4. memcached 缓存服务器

    Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...

  5. 分布式内存对象缓存系统Memcached-概述

    全面掌握Memcached 1.       概述 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,是为了加快网站http://www. ...

  6. 分布式内存对象缓存 memcached

    分布式内存对象缓存 许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示.但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等 ...

  7. Python并发编程-Memcached (分布式内存对象缓存系统)

    一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  8. Memory Cache(内存缓存)

    当Google测试了Google Search服务的可用性后,发现速度是最影响Web应用的可用性的因素之一.相对于作用相同但是速度慢的应用,用户更喜欢速度快的应用.多来年,Google已经掌握了如何使 ...

  9. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...

随机推荐

  1. 【Ubuntu 16】 wifi连接 并解决无桌面图标问题

    笔记本上装了win10和ubuntu16双系统,ubuntu16有半年多没使用了,今天一登录成功后,没有桌面啦,一个干净的壁纸映入眼帘,真操蛋. 上网搜索后总结:应该是应用软件中心出了问题,可是,没法 ...

  2. TP-LINK 路由器怎么设置

    TP-LINK 路由器怎么设置... ----------------------- 1.线路连接: 没有使用路由器时,电脑直接连接宽带上网,现在使用路由器共用宽带上网,则需要用路由器来直接连接宽带. ...

  3. 利用mvc filterconfig属性实现权限验证

    好久没写过博客了,突然发现最后博客更新时间是2016年,感觉好长远 权限控制基本是所有cms系统或者进销存,或者几乎所有能和业务系统扯上关系的系统都要用上的一个模块,很多都想把这个模块独立出来,权限单 ...

  4. SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等

    1.SpringMVC基本概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 ...

  5. Java的static关键字

    本文参考:Java的static关键字 通过static关键字可以满足两方面的需要.一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象.另一种情形是,希 ...

  6. Centos7安装nginx并设置为HTTP代理服务器(正向代理)

    # wget https://nginx.org/download/nginx-1.9.9.tar.gz # .tar.gz # cd nginx- # ./configure --prefix=/u ...

  7. 十条最有效的PCB设计黄金法则

    十条最有效的PCB设计黄金法则 尽管目前半导体集成度越来越高,许多应用也都有随时可用的片上系统,同时许多功能强大且开箱即用的开发板也越来越可轻松获取,但许多使用案例中电子产品的应用仍然需要使用定制PC ...

  8. Linux_window与linux之间文件互传,上传下载

    window与linux之间文件互传 运行环境:Centos os7 + win8.1 +putty putty:是一个Telnet,ssh,rlogin,纯tcp以及串行接口连接软件,由于linux ...

  9. Serializable序列化的作用

    这里转载一篇讲解java序列化(Serializable)和反序列化方面的感觉很好的文章.1.序列化是干什么的?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的 ...

  10. datable 翻页事件处理

    JQuery datatable插件,点下一页在点击事件无效问题 (2013-10-16 16:01:54) 转载▼   分类: C# 在MVC的项目中,我利用jquery datatable 来实现 ...