Processing math: 100%

CentOS 5.2下Memcache的安装与配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

 一,memcache简单介绍:

memcached是高性能的分布式内存缓存服务器,为了提高性能,memcached中的数据都保存在内存中,重启memcached及重启操作系统都会导致缓存中的数据全部丢失,其缓存的数据达到指定的内存分配值之后,就会使用LRU算法删除不使用的缓存。(LRU算法的基本概念:当分配的内存可用空间不足时,它尽可能地先保留最常用的数据,将最近没有使用的数据移出内存,释放出的空间来存储其它的数据。)

其作用是缓存数据库查询结果,这样就减少了对数据库的访问次数据,从而减轻数据库的压力,这样就提高了用户的访问速度,典型应用如下图所示:

     

     

     

    二,安装服务器端:

    1,安装libevent库,它将Linuxepollfreebsd操作系统的kqueue等事件处理功能封装成统一的接口,memcached使用这个库,可以发挥其高性能。

    [root@youxia205 opt]# yum install libevent libevent-devel

     

     

    2,下载memcache源码包:

    [root@youxia205 opt]# wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz

     

     

    3,解压、编译、安装:

    [root@youxia205 opt]# tar -zxvf memcached-1.4.5.tar.gz

    [root@youxia205 opt]# cd memcached-1.4.5

    [root@youxia205 memcached-1.4.5]# ./configure

    [root@youxia205 memcached-1.4.5]# make && make install

     

     

    4,安装完成之后可以看下memcache的参数:

    [root@youxia205 local]# memcached -help

    memcached 1.4.5

    -p <num>      TCP port number to listen on (default: 11211)

    -U <num>      UDP port number to listen on (default: 11211, 0 is off)

    -s <file>     UNIX socket path to listen on (disables network support)

    -a <mask>     access mask for UNIX socket, in octal (default: 0700)

    -l <ip_addr>  interface to listen on (default: INADDR_ANY, all addresses)

    -d            run as a daemon

    -r            maximize core file limit

    -u <username> assume identity of <username> (only when run as root)

    -m <num>      max memory to use for items in megabytes (default: 64 MB)

    -M            return error on memory exhausted (rather than removing items)

    -c <num>      max simultaneous connections (default: 1024)

    -k            lock down all paged memory.  Note that there is a

                  limit on how much memory you may lock.  Trying to

                  allocate more than that would fail, so be sure you

                  set the limit correctly for the user you started

                  the daemon with (not for -u <username> user;

                  under sh this is done with 'ulimit -S -l NUM_KB').

    -v            verbose (print errors/warnings while in event loop)

    -vv           very verbose (also print client commands/reponses)

    -vvv          extremely verbose (also print internal state transitions)

    -h            print this help and exit

    -i            print memcached and libevent license

    -P <file>     save PID in <file>, only used with -d option

    -f <factor>   chunk size growth factor (default: 1.25)

    -n <bytes>    minimum space allocated for key+value+flags (default: 48)

    -L            Try to use large memory pages (if available). Increasing

                  the memory page size could reduce the number of TLB misses

                  and improve the performance. In order to get large pages

                  from the OS, memcached will allocate the total item-cache

                  in one large chunk.

    -D <char>     Use <char> as the delimiter between key prefixes and IDs.

                  This is used for per-prefix stats reporting. The default is

                  ":" (colon). If this option is specified, stats collection

                  is turned on automatically; if not, then it may be turned on

                  by sending the "stats detail on" command to the server.

    -t <num>      number of threads to use (default: 4)

    -R            Maximum number of requests per event, limits the number of

                  requests process for a given connection to prevent

                  starvation (default: 20)

    -C            Disable use of CAS

    -b            Set the backlog queue limit (default: 1024)

    -B            Binding protocol - one of ascii, binary, or auto (default)

    -I            Override the size of each slab page. Adjusts max item size

                  (default: 1mb, min: 1k, max: 128m)

     

    5,启动memcached服务:

    [root@youxia205 local]# /usr/local/bin/memcached -u root -p 11211 -m 2048m -d

    #-u是指运行memcache的用户,-p是设置memcache监听的端口,-m是分配给memcache使用的内存数据量

     -d是指作为daemon在后台启动。

     

     

    6,查看是否启动成功:

    [root@youxia205 local]# netstat -tunlp | grep memcache

    tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      14494/memcached    

    udp        0      0 0.0.0.0:11211               0.0.0.0:*                               14494/memcached 

     

     

     

    7,设置数据库的相关信息:

    #建立一个名称为mydb的库:

    mysql> create database mydb;

    Query OK, 1 row affected (0.00 sec)

     

    #使用库,并创建personal_info表:

    mysql> use mydb;

    Database changed

    mysql> CREATE TABLE `personal_info` (

        -> `pi_id` bigint(20) NOT NULL auto_increment,

        -> `pi_name` varchar(50) NOT NULL,

        -> `pi_tel` varchar(15) default NULL,

        -> `pi_qq` varchar(15) default NULL,

        -> `pi_email` varchar(50) default NULL,

        -> PRIMARY KEY (`pi_id`)

        -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

    Query OK, 0 rows affected (0.00 sec)

     

    #插入一条数据

    mysql> INSERT INTO `mydb`.`personal_info` (

        -> `pi_id` ,

        -> `pi_name` ,

        -> `pi_tel` ,

        -> `pi_qq` ,

        -> `pi_email`

        -> )

        -> VALUES (

        -> '1', 'eric', '13611031222', '55555555', 'eric@nginxs.com'

        -> );

    Query OK, 1 row affected (0.00 sec)

     

    #查看表中的数据:

    mysql> select * from  personal_info ;

    +-------+---------+-------------+----------+-----------------+

    | pi_id | pi_name | pi_tel      | pi_qq    | pi_email        |

    +-------+---------+-------------+----------+-----------------+

    |     1 | eric    | 13611031222 | 55555555 | eric@nginxs.com |

    +-------+---------+-------------+----------+-----------------+

    1 row in set (0.00 sec)

     

     

     

     

    三,安装客户端(需要PHP环境及PHPmemcache扩展):

    1,由于服务器已经安装了ApacheMySQL,直接发安装PHP,下载源码包:

    [root@youxia205 opt]# wget http://www.php.net/get/php-5.2.14.tar.bz2/from/cn.php.net/mirror

     

    2,解压、编译、安装、配置:

    [root@youxia205 opt]# tar -jxvf php-5.2.14.tar.bz2

    [root@youxia205 opt]# cd php-5.2.14

     

    [root@youxia205 php-5.2.14]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/var/lib/mysql --with-jpeg-dir \

    > --with-png-dir --with-bz2 --with-freetype-dir --with-iconv-dir  --enable-thread-safe-client

     

     

    注:编译PHP的时候遇到的错误:

    configure: error: Cannot find libmysqlclient_r under /usr.

    Note that the MySQL client library is not bundled anymore!

     

    解决办法如下:

    [root@youxia205 php-5.2.14]# cp -r /usr/lib64/mysql/* /usr/lib/

     

    [root@youxia205 php-5.2.14]# make && make install

     

    [root@youxia205 php-5.2.14]# cp php.ini-dist /usr/local/php/etc/php.ini

     

    [root@youxia205 ~]# vi /usr/local/apache2/conf/httpd.conf

     

    在AddType application/x-gzip .gz .tgz下面添加

    AddType application/x-httpd-php .php

     

    在index.html后面添加index.php,如下所示:

    <IfModule dir_module>

        DirectoryIndex index.html index.php

    </IfModule>

     

     

    3,启动Apache服务:

    [root@youxia205 htdocs]# /usr/local/apache2/bin/apachectl start

     

     

    4,安装memcachePHP扩展(下载源码包、编译、安装、配置):

    [root@youxia205 opt]# wget http://pecl.php.net/get/memcache-2.2.5.tgz

     

    [root@youxia205 opt]# tar -zxvf memcache-2.2.5.tgz

    [root@youxia205 opt]# cd memcache-2.2.5

    [root@youxia205 memcache-2.2.5]# /usr/local/php/bin/phpize

    Configuring for:

    PHP Api Version:         20041225

    Zend Module Api No:      20060613

    Zend Extension Api No:   220060519

     

    [root@youxia205 memcache-2.2.5]# ./configure --enable-memcache -with-php-config=/usr/local/php/bin/php-config --with-zlib-dir

    [root@youxia205 memcache-2.2.5]# make

    [root@youxia205 memcache-2.2.5]# make install

    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20060613/

     

    [root@youxia205 memcache-2.2.5]# vi /usr/local/php/etc/php.ini

    extension=memcache.so

     

     

    四,测试memcache

    1,在网站目录下建立一个测试文件,名称为memtest.php,具体如下:

    [root@youxia205 ~]# cd  /usr/local/apache2/htdocs

    [root@youxia205 htdocs]# vi memtest.php

    <?php

    $memcachehost = '192.168.0.205';

    $memcacheport = 11211;

    $memcachelife = 60;

    $memcache = new Memcache;

    memcache>connect(memcachehost,$memcacheport) or die ("Could not connect");

    $query="select * from personal_info limit 10";

    key=md5(query);

    if(!memcache>get(key))

    {

                    $conn=mysql_connect("localhost","root","user");

                    mysql_select_db(mydb);

                    result=mysqlquery(query);

                    while (row=mysqlfetchassoc(result))

                    {

                            arr[]=row;

                    }

                    $f = 'mysql';

                    memcache>add(key,serialize($arr),0,30);        //mysql 查询后,插入 memcached

                    data=arr ;

    }

    else{

            $f = 'memcache';

            datamem=memcache->get($key);

            data=unserialize(data_mem);

    }

    echo $f;

    echo "<br>";

    //print_r($data);

    foreach(dataasa)

    {

                    echo "number is <b><font color=#FF0000>$a[pi_id]</font></b>";

                    echo "<br>";

                    echo "name is <b><font color=#FF0000>$a[pi_name]</font></b>";

                    echo "<br>";

                    echo "tel is <b><font color=#FF0000>$a[pi_tel]</font></b>";

                    echo "<br>";

                    echo "qq is <b><font color=#FF0000>$a[pi_qq]</font></b>";

                    echo "<br>";

                    echo "email is <b><font color=#FF0000>$a[pi_email]</font></b>";

                    echo "<br>";

     

    }

    ?>

     

    2,执行测试:

    #执行的时候报错

    Fatal error: Class 'Memcache' not found in /usr/local/apache2/htdocs/memtest.php on line 5

     

    #解决方法如下:

    [root@youxia205 htdocs]# find / -name memcache.so

    /usr/local/php/lib/php/extensions/no-debug-zts-20060613/memcache.so

    /opt/memcache-2.2.5/.libs/memcache.so

    /opt/memcache-2.2.5/modules/memcache.so

     

    vi /usr/local/php/etc/php.ini

    extension_dir = "./"

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20060613"

     

     

    再次执行:

     

     

     

    查看数据库中正在执行的语句,没有发现对mydb库执行查询的线程,说明PHP直接从memcache中提取的数据:

    mysql> show processlist;

    +-----+----------+-----------------+-------+---------+------+-------+------------------+

    | Id  | User     | Host            | db    | Command | Time | State | Info             |

    +-----+----------+-----------------+-------+---------+------+-------+------------------+

    | 697 | prog     | localhost:44175      | word | Sleep   |   23 |       | NULL             |

    | 698 | prog     | localhost:44176       | word | Sleep   |   23 |       | NULL             |

    | 744 | user   | localhost              | mydb  | Sleep   | 3443 |       | NULL             |

    | 747 | user   | localhost              | NULL  | Query   |    0 | NULL  | show processlist |

    +-----+----------+-----------------+-------+---------+------+-------+------------------+

    4 rows in set (0.00 sec)

     










本文转自 trt2008 51CTO博客,原文链接:http://blog.51cto.com/chlotte/383327,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
235
分享
相关文章
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
199 26
CentOS 7.8下使用kubeadm安装Kubernetes 1.26
这就是所有的前线报告,冒险家们,你们已经做好准备,开始在CentOS 7.8上通过Kubeadm安装Kubernetes 1.26的挑战了吗?走上这段旅程,让你的代码飞翔吧。
67 16
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
55 10
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
### 安装VMtools的作用及步骤 安装VMtools可以实现Windows与CentOS之间的字符串和命令粘贴、文件夹共享等操作。在CentOS中,通过VMware菜单栏选择“VMware Tools”,将下载的压缩包拷贝到`/opt`目录并解压。接着进入终端,使用`./vmware-install.pl`命令完成安装。安装后重启系统,即可实现Windows与CentOS之间的字符和文件共享。具体步骤包括解压文件、启动命令行终端、安装VMtools以及配置文件共享。
98 16
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
在CentOS 7.9中安装sshpass教程
如果在控制台显示出sshpass的使用方法,那就说明我们的大餐已经准备好,sshpass已经成功安装。 以上就是在 CentOS 7.9 中安装 sshpass 的彩色步骤,专业而生动,就像大厨在厨房一样顺利。
62 8
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
179 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
如何从CentOS7升级到8?CentOS8最新安装教程
从CentOS 7升级到8只需三步:清理系统、更换软件包及存储库、安装新内核与发布版本。首先确保系统最新并清理冗余包,接着替换基础系统包为CentOS 8版本,最后通过DNF工具完成内核更新与系统同步。整个过程需在终端执行,建议升级前备份VPS快照以防数据丢失。此方法可避免重装系统导致的数据清除问题,实现平滑升级。
133 6
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
277 25
|
2月前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
107 20
Centos7.9安装kerberos
Centos7.9安装kerberos
124 25
下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等