我的编程空间,编程开发者的网络收藏夹
学习永远不晚

浅解memcache

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

浅解memcache


一.什么是memcache?

  memcache是一套分布式的高速缓存系统,对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著,是一套开放源代码软件。它通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。服务器端主程序memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作,最大同时连接数为200。memcache既支持TCP协议,也支持UDP协议。


二.memcache的工作流程

        memcache先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。


三.memcached与redis

        redis是一个开源的日志型、Key-Value数据库,与memcache相比,有如下区别:

        1.memcached所有数据一直存储在内存中,而redis并不是;

        2.memcached只支持简单的key/value类型的数据,redis支持list、set、hash等数据结构的存储;

        3.redis支持数据的备份,即主从数据的复制;

        4.redis支持数据的持久化,可以讲内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。


四.memcached在php中的简单应用


系统环境:rhel6 x32 selinux and iptables disabled

主机角色:172.25.46.1 nginx php memcached

此实验中关于nginx和php的安装不再讲解,可参考我之前的文章《基于lnmp架构的Dsicuz论坛》


  • 获取源码包并进行解压缩

     #  tar zxf memcache-2.2.5.tgz

        cd memcache-2.2.5


  • 配置环境变量

     #   vi ~/.bash_profile

        PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin

     #   source ~/.bash_profil


  • 使用phpzie扩展php模块,即在php中加入memcached模块

   #    phpize

        Configuring for:

        PHP Api Version:        20100412

               Zend Module Api No:      20100525

               Zend Extension Api No:    220100525

          #   ./configure --enable-memcache

          #     make &&make install

                 Installing shared extensions:     /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20100525/

          #     cd   /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20100525/

          #     ll memcache.so

                -rwxr-xr-x 1 root root 259040 Jan 16 14:00memcache.so


  •         memcached为php做缓存

        #     cd /usr/local/lnmp/php/etc

        #     vim  php.ini

                844 ;  extension=msql.so

                845    extension=memcache.so


  •          编写php函数

        #        cd  /usr/local/lnmp/nginx/html

        #        vim  index.php

                 <?php

                 phpinfo()

                 ?>


  •         开启nginx及php服务

     #      nginx

     #      nginx -s reload

         #     /etc/init.d/fpmrestart

       

此时可以使用浏览器测试php页面,我在实验中访问的是172.25.46.1/index.php,如图:

浅解memcache


  • 安装并启动memcached服务

      #  yum install -y memcached.x86_64

     #   /etc/init.d/memcached start


  • 测试端口

    #   telnetlocalhost 11211

          Trying ::1...

          Connected to localhost.

          Escape character is '^]'.

          stats                                       ##查看memcached状态

          STAT pid 4664

          STAT uptime 72

          STAT time 1452925893

          STAT version 1.4.4

           ......

          STAT curr_items 0

          STAT total_items 0

          STAT evictions 0

          END

          quit


  • 将memcached监控页面放到nignx的发布目录下

     #    cd memcache-2.2.5

      #    cp memcache.php /usr/local/lnmp/nginx/html/

      #    cd /usr/local/lnmp/nginx/html/

      #    vim memcache.php      

            $VERSION='$Id: memcache.php,v 1.22008/09/11 19:21:06 mikl Exp $';

 

            define('ADMIN_USERNAME','memcache');    // Admin Username              

            define('ADMIN_PASSWORD','westos');      // Admin Password                     

            define('DATE_FORMAT','Y/m/d H:i:s');

            define('GRAPH_SIZE',200);

            define('MAX_ITEM_DUMP',50);

 

            $MEMCACHE_SERVERS[] = '172.25.46.1:11211';// add more as an array             #监听本机的11211端口

            #$MEMCACHE_SERVERS[] ='mymemcache-server2:11211'; // add more as an array


注意:在此实验中,编辑此文件时要将后两行注释掉一行。我在实验开始,都打开后,可以访问到监控页面,但是显示不了监控画面。


  • 编写测试页面

  # vim test.php

        <?php

       $memcache = new Memcache;

       $memcache->connect('127.0.0.1', 11211)or die ("Could not connect");

       $version = $memcache->getVersion();

       echo "Server's version:".$version."\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 (datawill expire in 10 seconds)\n";

       $get_result = $memcache->get('key');

       echo "Data from the cache:\n";

       var_dump($get_result);

       ?>


  此时可以使用浏览器访问memcached监控页面,我在实验中访问的是172.25.46.1/memcache.php,用户及密码是文件memcache.php编辑的,如图:

 浅解memcache


进入监控页面,可以看到缓存使用为0,命中率为50%:

浅解memcache


访问test.php页面,对memcached进行测试,实验中我访问的是172.25.46.1/test.php,如图:

浅解memcache


刷新此页面,再观察memcached监控页面发生变化,缓存使用为119.0,命中率为85.7%,如图:

浅解memcache


这是一个简单的memcached在php中的应用,如您发现博文中存在问题或者您有更好地建议和意见可及时反馈给我哦~谢谢您的来访!

浅解memcache

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

浅解memcache

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2024-04-02
2024-04-02
2024-04-02

怎么解决php无法加载memcache问题

这篇文章主要讲解了“怎么解决php无法加载memcache问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决php无法加载memcache问题”吧!php无法加载memcache的解
2023-06-20

python操作memcache

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值的hash map。其守护
2023-01-31

php怎么安装memcache

本篇内容主要讲解“php怎么安装memcache”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么安装memcache”吧!1、下载memcached软件32位下载地址: memcache
2023-06-04

无法在php中查找到memcache如何解决

无法在php中查找到memcache如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php找不到memcache的解决办法:1、写一个phpinfo查看文
2023-06-14

python 链接和操作 memcache方法

1,打开memcached服务memcached -m 10 -p 120002,使用python-memcached模块,进行简单的链接和存取数据import memcachemc = memcache.Client(['127.0.0.
2022-06-04

php 5.3.10如何安装memcache

这篇文章主要介绍了php 5.3.10如何安装memcache,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3
2023-06-15

编程热搜

目录