阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7下Memcached安装和简单使用

188次阅读
没有评论

共计 11806 个字符,预计需要花费 30 分钟才能阅读完成。

前言:memcached 的介绍

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached 基于一个存储键 / 值对的 hashmap。其守护进程(daemon)是用 C 写的,但是客户端可以用任何语言来编写,并通过 memcached 协议与守护进程通信。

对于强化版的 memcached:Redis,在我的前两篇文章有介绍到它的安装和使用:Redis 在 CentOS 7 上的安装部署 http://www.linuxidc.com/Linux/2017-05/143312.htm、CentOS 7 下安装 php-redis 扩展及简单使用 http://www.linuxidc.com/Linux/2017-05/143316.htm,如果大家想了解 memcached 和 redis 的异同和在什么情况下我们应该怎么选择缓存系统 http://www.linuxidc.com/Linux/2017-05/143317p2.htm,以下这篇文章相信对大家会有一个很好的启发:缓存技术 PK:选择 Memcached 还是 Redis?,感谢这篇文章的作者的精辟分析。

在本篇文章中,我会带领大家在 CentOS 7 下安装和使用 Memcached。

步骤一:memcached 的安装

memcached 的安装包括:1、服务端的安装;2、客户端的安装

1、服务端的安装:

在这里,由于用编译安装 memcached 服务端过于复杂,因此我选用依赖管理工具 yum 来实现 memcached 的服务端安装:

[root@localhost /]# yum install -y memcached

-y 表示自动应答,即默认安装所有需要用到的依赖包

在这一步之后,我们就安装完了。

我们尝试去启动一下 memcached:

[root@localhost /]# /usr/bin/memcached -b -l 127.0.0.1 -p 11211 -m 150 -u root

-b 守护进程模式(退出终端窗口之后使程序还在运行),-l 指定 IP 地址 127.0.0.1,-p 指定端口号 11211,-m 为 memcached 分配多少内存(单位:M),-u 指定使用哪个用户启动 memcached

查看 memcached 是否在运行:

[root@localhost /]# ps -ef | grep memcached
// 或
[root@localhost /]# pstree -p | grep memcached

如果能够看到存在 memcached 进程,那就说明我们的 memcached 服务端已经安装成功了。

2、客户端的安装

客户端的安装又分为两步:1、libmemcached 客户端库的安装;2、为 PHP 安装 php-memcached 扩展

现在我们先来下载后面安装所需要的两个安装包

[root@localhost /]# cd /usr/local/src   #我的所有源码包习惯放在该目录下
[root@localhost src]# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz  #下载 libmemcached 源码包
[root@localhost src]# wget http://pecl.php.net/get/memcached-2.2.0.tgz  #下载 memcached 源码包
[root@localhost src]# ls
libmemcached-1.0.18.tar.gz  memcached-2.2.0.tgz

1、libmemcached 客户端库的安装:

首先解压 libmemcached-1.0.18.tar.gz、配置

[root@localhost src]# tar -zxvf libmemcached-1.0.18.tar.gz
[root@localhost src]# cd libmemcached-1.0.18/
[root@localhost libmemcached-1.0.18]# ./configure --prefix=/usr/lib/libmemcached

–prefix 指定安装目录,该目录我们后面会用到

编译、安装:

[root@localhost libmemcached-1.0.18]# make && make install

2、为 PHP 安装 php-memcached 扩展

首先解压 libmemcached-1.0.18.tar.gz、配置

[root@localhost libmemcached-1.0.18]# cd ..
[root@localhost src]# tar -zxvf memcached-2.2.0.tgz
[root@localhost src]# cd cd memcached-2.2.0

到了这一步,我们要使用安装 php 时生成的 phpize 来生成 configure 配置文件

[root@localhost memcached-2.2.0]# /usr/local/php/bin/phpize (或 /usr/bin/phpize) 
// 具体用哪个要取决于你的 phpize 文件所在的目录,这时你应该用 whereis phpize 来查看路径,如果 php 是默认安装的话,直接使用 phpize 即可

配置

[root@localhost memcached-2.2.0]# ./configure -with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/lib/libmemcached --disable-memcached-sasl

-with-php-config 指定 php-config,该文件与 phpize 所在目录相同,
–with-libmemcached-dir 指定 libmemcached 安装目录,就刚才我们 –prefix 那个目录,–disable-memcached-sasl 说明我们系统不支持 sasl.h

编译、安装

[root@localhost memcached-2.2.0]# make && make install

如果安装成功,会提示:Installing shared extension:/usr/local/php/lib/extensions/no-debug-non-zts-20160524/ 等类信息

接下来,我们编辑 php 配置文件 php.ini,你可以用 whereis php.ini 查看所在位置(我的在 /etc/php.ini),把 php-memcached 扩展加到配置文件。

在 php.ini 中添加以下内容:

extension=memcached.so

步骤二:重启 apache 服务器,使配置生效

[root@localhost memcached-2.2.0]# systemctl restart httpd.service

重启完之后,检查是否安装完成 php-memcached 扩展

[root@localhost memcached-2.2.0]# echo "<?php echo phpinfo() ?>">>/home/www/index.php(这里 web 目录如果没改的话是在 /var/www/html/)

在浏览器地址栏输入 127.0.0.1,查看 php 扩展,如果有以下图片所示,则表示安装成功:

CentOS 7 下 Memcached 安装和简单使用
CentOS 7 下 Memcached 安装和简单使用

当然,更方便的方法是用 php -m

CentOS 7 下 Memcached 安装和简单使用

上面都说明了我们已经成功的将 memcached 加入到 php 扩展中了

步骤三:使用 php 简单操作 memcached

其实 memcached 和 redis、MySQL 是没什么两样,同是数据库,(redis 是非关系数据库,mysql 是关系数据库),因此使用也是差不多的,同样具有命令行使用和 php 操作使用,关于 memcached 的更多命令大家可以自行百度。

<?php

    $m = new Memcached();// 实例化 Memcached 类
    $arr = array(array('127.0.0.1',11211);
    );
    $m->addServers($arr);

    $m->set('name','lsgogroup',3600);// 设置缓存值,有效时间 3600 秒,如果有效时间设置为 0, 则表示该缓存值永久存在的(系统重启前)
    $m->get('name');// 读取缓存值
    $m->delete('name');// 删除缓存值

?>

redis 命令远不止上面所说的,这里只做简单的使用。

为 PHP 安装 Memcached 扩展连接 Memcached http://www.linuxidc.com/Linux/2016-05/131690.htm

Linux 下 Memcached 安装与启用  http://www.linuxidc.com/Linux/2016-07/133423.htm

Memcached 构建缓存加速集群部署 http://www.linuxidc.com/Linux/2017-02/140656.htm

Linux CentOS 7 下通过 Memcached 实现 Session 共享  http://www.linuxidc.com/Linux/2016-09/135552.htm

Memcached 的安装配置及将 PHP 的 session 保存在 Memcached 中  http://www.linuxidc.com/Linux/2017-02/140679.htm

Linux CentOS 7 下通过 Memcached 实现 Session 共享  http://www.linuxidc.com/Linux/2016-09/135552.htm

CentOS 6.6 下 Memcached 源码安装配置  http://www.linuxidc.com/Linux/2015-09/123019.htm

Linux CentOS 7 下 Memcached 安装与配置  http://www.linuxidc.com/Linux/2016-09/135553.htm

Memcached 的详细介绍:请点这里
Memcached 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143317.htm

缓存技术 PK:选择 Memcached 还是 Redis?

要 Memcached 还是要 Redis? 在构建一款现代且由数据库驱动的 Web 应用程序并希望使其拥有更为出色的性能表现时,这个问题总会时不时出现、并给每一位开发人员带来困扰。在考虑对应用程序的性能表现进行提升时,缓存机制往往是解决问题的重要起点,而 Memcached 与 Redis 则经常被作为初步方案来加以比较。

这两套声名显赫的缓存引擎拥有着诸多相似之处,但它们同样也具备大量显著差异。作为二者当中更年轻也更加灵活的方案,Redis 被大部分技术人员视为首选目标——但请别掉以轻心,不容忽视的重要例外情况也是客观存在的。

两者相似之处

让我们先从二者的相似之处谈起。Memcached 与 Redis 都属于内存内、键值数据存储方案。它们都从属于数据管理解决方案中的 NoSQL 家族,而且都基于同样的键值数据模型。双方都选择将全部数据保存在内存当中,这自然也就让它们成为非常理想的缓冲层实现方案。从性能表现的角度来看,两类数据存储机制也具备诸多共通性,包括拥有几乎相同的特征 (与指标) 表现、而且高度关注工作负载的数据吞吐量与延迟状况。

除了同为内存内键值数据存储方案,Memcached 与 Redis 还都是相当成熟而且极具人气的开源项目。Memcached 最初是由 Brad Fitzpatrick 于 2003 年开发而成,当时其直接服务对象为 LiveJournal 交友网站。在此之后,Memcached 被重新用 C 语言进行了编写 (其最初实现方式为 Perl 语言) 且投身于公共领域,并在这里逐步发展为现代 Web 应用程序的构建基石。Memcached 项目的当前开发工作主要关注其运行稳定性及优化效果方面,而不再积极为其打造更多新型功能。

Redis 则由 Salvatore Sanfilippo 于 2009 年创建,而且时至今日 Sanfilippo 仍然担任着该项目的首席开发者以及惟一维护者的角色。Redis 有时候会被人们称为“强化版的 Memcached”。考虑到从 Memcached 身上吸取并借鉴到大量宝贵的经验教训,这样的评价其实并不令人意外。Redis 在功能多样性方面要胜过 Memcached,这虽然让者更为强大也更具灵活性、但其复杂程度也较后者为甚。

作为两套被众多企业采纳并部署在无数关键性生产任务环境当中的解决方案,Memcached 与 Redis 在任何一种可行性编程语言领域都拥有能够提供支持的客户端库,而且二者也被包含在开发人员们使用的多种库及软件包之内。事实上,现在我们甚至已经很难找到一套不包含 Memcached 或者 Redis 内置支持机制的 Web 堆栈。

Memcached 与 Redis 为什么如此受人拥戴? 除了二者卓越的实际效果之外,双方各自极为简便的上手难度也是又一大加分项。无论是 Memcached 还是 Redis,其使用便捷性在开发人员当中都可谓广为人知。只需要几分钟我们就能完成安装工作,并让它们开始与应用程序顺畅协作。换句话来说,只需投入一小部分时间与精力,大家就能获得立竿见影且效果极佳的性能表现提升——具体而言,性能将直接步入新的量级。面对如此简单而又能够带来巨大收益的解决方案,又有谁能抗拒得了它们的诱惑呢?

何时应该使用 Memcached

相对 Memcached 而言,Redis 的面世时间更晚且具备更多功能,因此开发人员通常将其视为默认性首选方案。不过有两类特殊场景仍然是 Memcached 的一家天下。首先就是对小型静态数据进行缓存处理,最具代表性的例子就是 HTML 代码片段。Memcached 的内部内存管理机制虽然不像 Redis 的那样复杂,但却更具实际效率——这是因为 Memcached 在处理元数据时所消耗的内存资源相对更少。作为 Memcached 所支持的惟一一种数据类型,字符串非常适合用于保存那些只需要进行读取操作的数据,因为字符串本身无需进行进一步处理。

除此之外,Memcached 在横向扩展方面也比 Redis 更具优势。由于其在设计上的思路倾向以及相对更为简单的功能设置,Memcached 在实现扩展时的难度比 Redis 低得多。不过根据我们了解到的情况,目前已经有多种经过测试且切实有效的方案能够将 Redis 扩展至多台服务器之上,而其即将发布的 3.0 版本 (感兴趣的朋友可以点击此处查看其候选版本说明) 将包含专门针对横向扩展场景的内置集群化机制。

何时应该使用 Redis

除非大家需要考虑某种限定性条件 (例如处理传统应用程序) 对于 Memcached 的特殊依赖性,或者自己的实际用例属于前面提到的两类场景中的一种,否则请直接选择 Redis 并加以运用。凭借着 Redis 所带来的卓越缓存方案,我们将拥有强大的处理能力——例如对缓存内容及持久性进行细节调整的能力——以及出色的整体执行效率。

Redis 几乎在缓存管理工作中的每一个侧面都表现出显而易见的优越性。这套缓存方案采用所谓数据回收机制,能够将陈旧数据从内存中删除以提供新数据所必需的缓存空间。Memcached 的数据回收机制使用的是 LRU(即最低近期使用量)算法,而且往往会比较武断地直接删除掉与新数据体系相近的原有内容。相比之下,Redis 允许用户更为精准地进行细化控制,利用六种不同回收策略确切提高缓存资源的实际利用率。Redis 还采用更为复杂的内存管理与回收对象备选方案。

Redis 还能为我们带来最大程度的灵活性空间,从而保证管理员在打理缓存对象时拥有充裕的施展平台。在这方面,Memcached 将键名限制在 250 字节,值也被限制在不超过 1MB,且只适用于普通字符串。相比之下,Redis 则将键名与值的最大上限各自设定为 512MB,且支持二进制格式。Redis 支持六种数据类型,因此能够更加智能地对数据进行缓存处理及操作,这相当于为应用程序开发人员敞开了一道通往无尽可能性的大门。

相对于将对象保存为序列化字符串,Redis 允许开发人员以散列方式将对象域及值加以保存,并利用单一键对其进行管理。Redis 散列机制的存在保证开发人员无需经历获取完整字符串、反序列化、更新值、对象重新序列化并在每次值更新后利用其替代缓存内完整字符串这一系列复杂的流程——这也意味着资源消耗量得以降低、性能表现迎来显著提升。Redis 所支持的其它数据类型,例如 Lists 以及 Sets——也可被用于实现更加复杂的缓存管理模式。

Redis 的另一大重要优势在于,它所保存的数据具备透明化特性,也就是说服务器能够直接对这些数据进行操作。Redis 当中提供 160 多种可用命令,其中大部分用于实现数据处理操作并通过服务器端脚本将逻辑嵌入至数据存储体系当中。这些内置命令及用户脚本带来了极大的灵活性优势,足以帮助大家直接在 Redis 内部完成数据处理任务——而不必将数据在网络中的其它专门处理系统之间来回移动。

Redis 还提供可选而且能够具体调整的数据持久性方案,其设计目的在于在发生规划内停机或者计划外故障之后对缓存内容进行重新引导。虽然我们更倾向于强调缓存内数据的易失性与暂时性,但将数据在磁盘中加以持久保存在某些缓存场景当中仍然极具现实意义。这种机制能够在设备重启之后快速将保存在磁盘上的数据重新载入至缓存当中,从而大大缩短缓存预热周期并根据主数据存储内容对当前缓存内容进行重新评估。

最后但也同样重要的一点是,Redis 能够提供复制功能。复制功能旨在帮助缓存体系实现高可用性配置方案,从而在遭遇故障的情况下继续为应用程序提供不间断的缓存服务。很明显,一套成熟的缓存方案应该能够在应用程序发生故障时略微甚至完全不给用户体验或者应用程序性能表现带来任何影响,而这种对缓存内容及服务可用性的有力保障在大多数情况下也成为缓存解决方案的一大主要优势。

开源软件业界一直在不断努力,为我们带来当下技术领域中最为出色的各类解决方案。而在谈到利用缓存机制对应用程序性能表现加以提升这一话题时,Redis 与 Memcached 作为两款广受赞誉而且久经考验的解决方案、也自然而然地成为完成这项任务的两大首选技术成果。不过从功能多样性以及设计先进性的角度出发,Redis 显然更适合被大家作为通用性的首选方案——除了少部分特殊场景之外。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143317.htm

前言:memcached 的介绍

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached 基于一个存储键 / 值对的 hashmap。其守护进程(daemon)是用 C 写的,但是客户端可以用任何语言来编写,并通过 memcached 协议与守护进程通信。

对于强化版的 memcached:Redis,在我的前两篇文章有介绍到它的安装和使用:Redis 在 CentOS 7 上的安装部署 http://www.linuxidc.com/Linux/2017-05/143312.htm、CentOS 7 下安装 php-redis 扩展及简单使用 http://www.linuxidc.com/Linux/2017-05/143316.htm,如果大家想了解 memcached 和 redis 的异同和在什么情况下我们应该怎么选择缓存系统 http://www.linuxidc.com/Linux/2017-05/143317p2.htm,以下这篇文章相信对大家会有一个很好的启发:缓存技术 PK:选择 Memcached 还是 Redis?,感谢这篇文章的作者的精辟分析。

在本篇文章中,我会带领大家在 CentOS 7 下安装和使用 Memcached。

步骤一:memcached 的安装

memcached 的安装包括:1、服务端的安装;2、客户端的安装

1、服务端的安装:

在这里,由于用编译安装 memcached 服务端过于复杂,因此我选用依赖管理工具 yum 来实现 memcached 的服务端安装:

[root@localhost /]# yum install -y memcached

-y 表示自动应答,即默认安装所有需要用到的依赖包

在这一步之后,我们就安装完了。

我们尝试去启动一下 memcached:

[root@localhost /]# /usr/bin/memcached -b -l 127.0.0.1 -p 11211 -m 150 -u root

-b 守护进程模式(退出终端窗口之后使程序还在运行),-l 指定 IP 地址 127.0.0.1,-p 指定端口号 11211,-m 为 memcached 分配多少内存(单位:M),-u 指定使用哪个用户启动 memcached

查看 memcached 是否在运行:

[root@localhost /]# ps -ef | grep memcached
// 或
[root@localhost /]# pstree -p | grep memcached

如果能够看到存在 memcached 进程,那就说明我们的 memcached 服务端已经安装成功了。

2、客户端的安装

客户端的安装又分为两步:1、libmemcached 客户端库的安装;2、为 PHP 安装 php-memcached 扩展

现在我们先来下载后面安装所需要的两个安装包

[root@localhost /]# cd /usr/local/src   #我的所有源码包习惯放在该目录下
[root@localhost src]# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz  #下载 libmemcached 源码包
[root@localhost src]# wget http://pecl.php.net/get/memcached-2.2.0.tgz  #下载 memcached 源码包
[root@localhost src]# ls
libmemcached-1.0.18.tar.gz  memcached-2.2.0.tgz

1、libmemcached 客户端库的安装:

首先解压 libmemcached-1.0.18.tar.gz、配置

[root@localhost src]# tar -zxvf libmemcached-1.0.18.tar.gz
[root@localhost src]# cd libmemcached-1.0.18/
[root@localhost libmemcached-1.0.18]# ./configure --prefix=/usr/lib/libmemcached

–prefix 指定安装目录,该目录我们后面会用到

编译、安装:

[root@localhost libmemcached-1.0.18]# make && make install

2、为 PHP 安装 php-memcached 扩展

首先解压 libmemcached-1.0.18.tar.gz、配置

[root@localhost libmemcached-1.0.18]# cd ..
[root@localhost src]# tar -zxvf memcached-2.2.0.tgz
[root@localhost src]# cd cd memcached-2.2.0

到了这一步,我们要使用安装 php 时生成的 phpize 来生成 configure 配置文件

[root@localhost memcached-2.2.0]# /usr/local/php/bin/phpize (或 /usr/bin/phpize) 
// 具体用哪个要取决于你的 phpize 文件所在的目录,这时你应该用 whereis phpize 来查看路径,如果 php 是默认安装的话,直接使用 phpize 即可

配置

[root@localhost memcached-2.2.0]# ./configure -with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/lib/libmemcached --disable-memcached-sasl

-with-php-config 指定 php-config,该文件与 phpize 所在目录相同,
–with-libmemcached-dir 指定 libmemcached 安装目录,就刚才我们 –prefix 那个目录,–disable-memcached-sasl 说明我们系统不支持 sasl.h

编译、安装

[root@localhost memcached-2.2.0]# make && make install

如果安装成功,会提示:Installing shared extension:/usr/local/php/lib/extensions/no-debug-non-zts-20160524/ 等类信息

接下来,我们编辑 php 配置文件 php.ini,你可以用 whereis php.ini 查看所在位置(我的在 /etc/php.ini),把 php-memcached 扩展加到配置文件。

在 php.ini 中添加以下内容:

extension=memcached.so

步骤二:重启 apache 服务器,使配置生效

[root@localhost memcached-2.2.0]# systemctl restart httpd.service

重启完之后,检查是否安装完成 php-memcached 扩展

[root@localhost memcached-2.2.0]# echo "<?php echo phpinfo() ?>">>/home/www/index.php(这里 web 目录如果没改的话是在 /var/www/html/)

在浏览器地址栏输入 127.0.0.1,查看 php 扩展,如果有以下图片所示,则表示安装成功:

CentOS 7 下 Memcached 安装和简单使用
CentOS 7 下 Memcached 安装和简单使用

当然,更方便的方法是用 php -m

CentOS 7 下 Memcached 安装和简单使用

上面都说明了我们已经成功的将 memcached 加入到 php 扩展中了

步骤三:使用 php 简单操作 memcached

其实 memcached 和 redis、MySQL 是没什么两样,同是数据库,(redis 是非关系数据库,mysql 是关系数据库),因此使用也是差不多的,同样具有命令行使用和 php 操作使用,关于 memcached 的更多命令大家可以自行百度。

<?php

    $m = new Memcached();// 实例化 Memcached 类
    $arr = array(array('127.0.0.1',11211);
    );
    $m->addServers($arr);

    $m->set('name','lsgogroup',3600);// 设置缓存值,有效时间 3600 秒,如果有效时间设置为 0, 则表示该缓存值永久存在的(系统重启前)
    $m->get('name');// 读取缓存值
    $m->delete('name');// 删除缓存值

?>

redis 命令远不止上面所说的,这里只做简单的使用。

为 PHP 安装 Memcached 扩展连接 Memcached http://www.linuxidc.com/Linux/2016-05/131690.htm

Linux 下 Memcached 安装与启用  http://www.linuxidc.com/Linux/2016-07/133423.htm

Memcached 构建缓存加速集群部署 http://www.linuxidc.com/Linux/2017-02/140656.htm

Linux CentOS 7 下通过 Memcached 实现 Session 共享  http://www.linuxidc.com/Linux/2016-09/135552.htm

Memcached 的安装配置及将 PHP 的 session 保存在 Memcached 中  http://www.linuxidc.com/Linux/2017-02/140679.htm

Linux CentOS 7 下通过 Memcached 实现 Session 共享  http://www.linuxidc.com/Linux/2016-09/135552.htm

CentOS 6.6 下 Memcached 源码安装配置  http://www.linuxidc.com/Linux/2015-09/123019.htm

Linux CentOS 7 下 Memcached 安装与配置  http://www.linuxidc.com/Linux/2016-09/135553.htm

Memcached 的详细介绍:请点这里
Memcached 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143317.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计11806字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中