zoukankan      html  css  js  c++  java
  • memcached简介及在shopex上的实践应用

    Memcached是什么?  

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据 库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目); 当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。   Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。      

    如何使用memcached-Server端?

    在服务端运行:# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211   

    这将会启动一个占用2G内存的进程,并打开11211端口用于接收请求。由于32位系统只能处理4G内存的寻址,所以在大于4G内存使用PAE的32位服务器上可以运行2-3个进程,并在不同端口进行监听



    源码包准备:

    1,memcached 1.2.1 for Win32 binaries http://jehiah.cz/projects/memcached-win32/files/memcached-1.2.1-win32.zip

    这个是 Win32 服务器端的 memcached 最新版本,直接下载就可以了;

    2,php_memcache-5.2-Win32-vc6-x86-20090408.zip http://downloads.php.net/pierre/php_memcache-5.2-Win32-vc6-x86-20090408.zip

    这个是 php 所需的 PECL 扩展,即 php_memcache 扩展;(一定要和自己的 PHP 版本相同,我用的是5.2.1)

    有了源码包包,那就开始大快朵颐吧,按照下面的步骤

    1. 将第一个包解压放某个盘下面,比如在c:\memcached
    2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install' 安装
    3. 再输入: ‘c:\memcached\memcached.exe -d start' 启动。(需要注意的: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了)
    4. 解压第二个包包,里面会只有一个 php_memcache.dll 文件,把它放入 usr/local/php5/ext/ 中
    5. 在C:\WINDOWS\php.ini 加入一行 ‘extension=php_memcache.dll'(不知道为什么 PHP 会有两个配置文件,一个在 usr/local/php5/php.ini, 而另一个则在 C:/WINDOWS/中,而且只改前一个配置文件不起作用,所以就把 WINDOWS 中的 php.ini 也改掉了!)

    6,接着在 php.ini 文件里加上:


    复制代码 代码如下:
    [Memcache]
    memcache.allow_failover = 1
    memcache.max_failover_attempts=20
    memcache.chunk_size =8192
    memcache.default_port = 11211

    最好就放在刚才写 "extension=php_memcache.dll" 的下面。(这是默认的一些配置)
    6.重新启动Apache,然后查看一下phpinfo,如果有 memcache 的说明,那么就说明安装成功啦!

    试运行:

    写一个 example.php 文件:(更多使用方法可以参看 PHP 手册里的 Memcache Functions 使用说明)
    复制代码 代码如下:

    <?php

    $memcache = new Memcache;
    $memcache->connect('localhost', 11211) or die ("Could not connect");

    $version = $memcache->getVersion();
    echo "Server's version: ".$version."<br/>\n";

    $tmp_object = new stdClass;
    $tmp_object->str_attr = 'test';
    $tmp_object->int_attr = 123;

    $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
    echo "Store data in the cache (data will expire in 10 seconds)<br/>\n";

    $get_result = $memcache->get('key');
    echo "Data from the cache:<br/>\n";

    var_dump($get_result);

    ?>

    如果有输出:
    复制代码 代码如下:
    Server's version: 1.4.5
    Store data in the cache (data will expire in 10 seconds)
    Data from the cache:
    object(stdClass)#3 (2) { ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) }

    则说明,我们的 Memcached 已经正常运行啦! :~>
    附件:2个文件和一个在线监控memcache的php文件

    /Files/showker/memcached_for_php.rar
  • 相关阅读:
    二叉树中序遍历的非递归实现
    求树的遍历、树的叶子节点个数、树的高度、copy树
    javascript知识点汇总(running)
    IOS零碎知识点(积累中)
    Cuda learn record three
    Cuda learn record two
    找出字符串中的最长的回文子串
    Cuda learn record one
    Chrome 安装失败 错误代码 0X80070057
    Vs 2015 项目中include 无法打开源文件
  • 原文地址:https://www.cnblogs.com/showker/p/1804384.html
Copyright © 2011-2022 走看看