广告
返回顶部
首页 > 资讯 > 数据库 >浅解memcache
  • 295
分享到

浅解memcache

2024-04-02 19:04:59 295人浏览 泡泡鱼
摘要

一.什么是memcache?  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

您可能感兴趣的文档:

--结束END--

本文标题: 浅解memcache

本文链接: https://www.lsjlt.com/news/42270.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 浅解memcache
    一.什么是memcache  memcache是一套分布式的高速缓存系统,对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著,是一套开放源代码软件。它通过在内存里维护一个统一的巨大的...
    99+
    2022-10-18
  • memcache 主从架构 详解
    repcached是日本人开发的实现memcached复制功能,它是一个单 master单 slave的方案,但它的 master/slave都是可读写的,而且可以相互同步,如果 master坏掉, sla...
    99+
    2022-10-18
  • memcache 安装
    第一章 第一小节 MEMCACHE 安装 和介绍 总结 安装MEMCACHE下载wget http://www.danga.com/memcached/dist/memcached-1.2.0.ta...
    99+
    2022-10-18
  • memcache集群
    四台电脑memcache:192.168.1.201 192.168.1.202magent: 192.168.1.100 192.168.1.101实验:1、安装libevent软件(四台)[root@...
    99+
    2022-10-18
  • centos安装memcache
    1.安装Memcached前需要先安装libevent,首先用wget下载libevent: wget http://www.monkey.org/~provos/libevent-1.4.13-...
    99+
    2022-10-18
  • python操作memcache
    Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值的hash map。其守护...
    99+
    2023-01-31
    操作 python memcache
  • Memcache服务搭建
    Memcache  Memcache的作用网上资料都讲的很好,说简单点就是减轻读取数据库的压力,原理也很简单:  被请求的数据会先到memcache里去取,如果没有就去数据库里取,顺便给memcache带一...
    99+
    2022-10-18
  • Memcache安全配置
    memcached -d -m 100 -u root -l x.x.x.x -p 11211 -c 512 -P /tmp/memcached.pid 参数说明: -d选项是启动一个守护进程...
    99+
    2022-10-18
  • 怎么解决php无法加载memcache问题
    这篇文章主要讲解了“怎么解决php无法加载memcache问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决php无法加载memcache问题”吧!php无法加载memcache的解...
    99+
    2023-06-20
  • 无法在php中查找到memcache如何解决
    无法在php中查找到memcache如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php找不到memcache的解决办法:1、写一个phpinfo查看文...
    99+
    2023-06-14
  • MEMCACHE常用的命令
    MEMCACHE的常用命令:SET ,GET,INCR,APPEND,DELETE,FLUSH_ALL,,GETS,CASSET ZHANG 0 0 3 ZHANG KEY 0 FLAG 0 EXPIRES...
    99+
    2022-10-18
  • php如何安装memcache
    在php中安装memcache扩展的方法首先,进入php官网,下载memcache源码包;下载memcache源码包后,将源码包解压到php安装目录下;memcache源码包解压好后,在php安装目录中查找到php.ini配置文件,并使用记...
    99+
    2022-10-11
  • php怎么安装memcache
    本篇内容主要讲解“php怎么安装memcache”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么安装memcache”吧!下载memcached软件32位下载地址: memcached-...
    99+
    2023-06-04
  • telnet中怎么操作memcache
    本篇文章给大家分享的是有关telnet中怎么操作memcache,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通过telnet连接memcac...
    99+
    2022-10-18
  • php 5.3.10如何安装memcache
    这篇文章主要介绍了php 5.3.10如何安装memcache,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3...
    99+
    2023-06-15
  • CentOS下PHP安装memcache扩展问题的解决方法
    本篇内容介绍了“CentOS下PHP安装memcache扩展问题的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!系统版本是5.2,把...
    99+
    2023-06-10
  • 浅谈Node.js:理解stream
    Stream在node.js中是一个抽象的接口,基于EventEmitter,也是一种Buffer的高级封装,用来处理流数据。流模块便是提供各种API让我们可以很简单的使用Stream。 流分为四种类型,...
    99+
    2022-06-04
    浅谈 Node stream
  • php5.5如何安装memcache扩展
    这篇文章主要为大家展示了php5.5如何安装memcache扩展,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“php5.5如何安装memcache扩展”这篇文章吧。php有什么用php是一个嵌套的...
    99+
    2023-06-06
  • php如何设置memcache缓存
    这篇文章主要介绍“php如何设置memcache缓存”,在日常操作中,相信很多人在php如何设置memcache缓存问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何设置memcache缓存”的疑惑有所...
    99+
    2023-06-20
  • Redis与Memcache有什么区别
    这篇文章主要介绍了Redis与Memcache有什么区别,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。Redis和Memcache 都是基于内存...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作