MemCached定义、安装、配置和小例子

MemCached是一个内存键值存储系统,用于缓存数据库调用、API调用和页面渲染的数据。本文介绍了在高并发场景下使用MemCached的原因,详细讲解了在Ubuntu上从源码和Ubuntu源安装MemCached的过程,以及安装PHP MemCached插件、配置和测试MemCached的方法。通过示例展示了如何在客户端程序中使用MemCached进行数据缓存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. MemCached是什么

    Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. (http://memcached.org/)

    MemCached从字面上看就是在Memerory中进行Cache,即把经常需要从数据库取出的数据缓存到内存中。

  2. 为什么用MemCached
    在高并发的情况下,数据库很可能会无法满足访问需求而成为系统瓶颈,此时对于那些变化不那么快、实时性不高的信息就没必要从数据库中读取,可以直接读取服务器内存。

  3. Ubuntu下如何使用MemCached
    3.1 安装memcached
    3.1.1 从源码

    wget http://memcached.org/latest
    tar -zxvf memcached-1.x.x.tar.gz
    cd memcached-1.x.x
    ./configure && make && make test && sudo make install

    3.1.2 从Ubuntu源

    sudo apt-get install memcached

    3.1.3 检查安装是否成功

    ps aux | grep memcached

    执行结果:
    执行结果

    3.2 安装php的MemCached插件

    sudo apt-get install php5-memcached

    根据PHP官方文档(http://php.net/manual/en/intro.memcached.php):

    This extension uses the libmemcached library to provide an API for communicating with memcached servers. It also provides a session handler (memcached).

    PHP插件仅是libmemcached库的PHP接口,依赖于libmemcached库(安装PHP插件时自动被安装),而根据libmemcached库官网的信息:
    libmemcached首页信息
    可知libmemcached库也只不过是使用3.1安装的memcache的API库。
    3.3 重启Apache以使安装的php插件生效

    sudo service apache2 restart

    3.4 配置MemCached
    由于memcached默认是监听本地回环地址:127.0.0.1,而如果不是在服务器本机上测试,则客户端虽然向memcache服务器发送了请求,memcached由于没有监听是不会回复的。服务器应该监听的是其可被客户机访问的实际IP地址(客户端浏览器访问的IP地址)。
    IP地址
    因此修改/etc/memcached.conf文件使其监听客户能访问的服务器地址,如:
    配置MemCached
    配置后重启MemCached

    sudo service memcached restart

    3.5 测试MemCached
    编写客户端程序:

    <?php
    $memcache = new Memcached;
    $memcache->addServer('192.168.109.129',11211);
    $key = 'weather';
    if(($value = $memcache->get($key))!=FALSE)
    {
        echo "Value of $key is ".$value.', Now is: '.date('Y-m-d H:m:s');
    }
    else
    {
        echo 'No value found by memcache, write it to memcache!<br/>';
        $value = 'Sunny';
        $result = $memcache->set($key,$value,10);
        if($result == TRUE)
        {
                echo 'Stored!<br/>';
                echo 'Now is: '.date('Y-m-d H:m:s');
        }
        else
        {
                echo 'Failed to store with error code:'.$memcache->getResultCode().'!';
        }
    }
    ?>
    

    结果:
    刚开始,由于被访问的网页检测到key是weather的数据没有在memcache中,则从数据库查询到信息后(测试代码省略数据库查询过程)放入memcache:
    刚开始
    再次访问时页面发现memcache中有key是weather的值,则直接从memcache中读取并返回不再查询数据库。
    再次访问
    等待到memcache中设置的key是weather的数据失效后再次访问,则可以看到数据被删除了。
    失效后访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值