序言


Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

当然memcached分为服务端和客户端。服务端用来存放缓存,客户端用来操作缓存。

客户端有两种常见的实现方式。

第一种是用php代码根据服务端的通讯规则自己写一个。

第二种是安装php扩展库(php-memcached)。

目录


一、Centos7 从零编译Nginx+PHP+MySql

二、Centos7 从零配置Nginx+PHP+MySql

三、Centos7 从零编译配置Memcached

一、准备工作


创建目录source和package,分别用来放源码和编译后的文件

# mkdir /source/
# mkdir /package/

二、memcached(服务端篇)


首先先安装memcached依赖库libevent。

2.1 安装libevent

[官方网站] http://libevent.org/

命令流程:

# cd /source/
# wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
# tar -zxvf libevent-2.0.22-stable.tar.gz
# cd libevent-2.0.22-stable
# ./configure --prefix=/package/libevent
# make
# make install

2.2 安装memcached

[官方网站] http://memcached.org/

命令流程:

# cd /source/
# wget http://memcached.org/files/memcached-1.4.25.tar.gz
# tar -zxvf memcached-1.4.25.tar.gz
# cd memcached-1.4.25
# ./configure --prefix=/lnmp/memcached --with-libevent=/package/libevent
# make
# make install

本章总结:

通过以上操作就很简单的把memcached服务端编译好了。这时候就可以打开服务端进行工作了。

# /lnmp/memcached/bin/memcached -d -m 2048 -l 127.0.0.1 -p 11211 -u root -c 1024 –P /tmp/memcached.pid
启动参数说明:
-d  选项是启动一个守护进程。
-m  分配给Memcache使用的内存数量,单位是MB,默认64MB。
-l  监听的IP地址。(默认:INADDR_ANY,所有地址)
-p  设置Memcache的TCP监听的端口,最好是1024以上的端口。
-u  运行Memcache的用户,如果当前为root的话,需要使用此参数指定用户。
-c  选项是最大运行的并发连接数,默认是1024。
-P  设置保存Memcache的pid文件。

三、memcached(客户端篇)

  第一种:php代码


这种方法实现客户端最简单,直接下载我写的《SL_Memcached》类库include到自己的项目里调用相关对象就行了。

当然,你也可以用其他语言实现。这里就不在讲了。

使用方法如下:

<?php
include('memcached.class.php'); $memcached = new SL_Memcached();       //实例化对象
$memcached->connect('127.0.0.1:11211');   //连接memcached服务端 $memcached->set('key1', '我是快乐的键值');   //设置键值
$memcached->set('key2', '我就要被删了');    //设置键值
$memcached->delete('key2');          //删除键值 var_dump($memcached->get('key1'));      //获取键值
var_dump($memcached->get('key2'));      //获取键值
?>

输出:

string(21) "我是快乐的键值"

NULL

四、memcached客户端篇)

  第二种:php-memcached


这种客户端比较麻烦了,他是生成php的扩展库文件memcached.so。

首先先安装memcached依赖库zlib、libmemcached。

4.1 安装zlib

[官方网站] http://zlib.net/

命令流程:

# cd /source/
# wget http://zlib.net/zlib-1.2.8.tar.gz
# tar -zxvf zlib-1.2.8.tar.gz
# ./configure --prefix=/package/zlib
# make
# make install

4.2 安装libmemcached

[官方网站] http://libmemcached.org/

命令流程:

# cd /source/
# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
# tar -zxvf libmemcached-1.0.18.tar.gz
# cd libmemcached-1.0.18
# ./configure --prefix=/package/libmemcached
# make
# make install

4.3 安装m4

[官方网站] http://www.gnu.org/software/m4/m4.html

命令流程:

# cd /source/
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz
# tar -zxvf m4-1.4.17.tar.gz
# cd m4-1.4.17
# ./configure --prefix=/package/m4
# make
# make install
# export PATH=/package/m4/bin:$PATH

4.3 安装php-memcached

[官方网站] http://pecl.php.net/package/memcached

命令流程:

# cd /source/
# wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
# unzip php7.zip
# cd php-memcached-php7
# /lnmp/php/bin/phpize
# ./configure \
# --with-php-config=/lnmp/php/bin/php-config \
# --with-zlib-dir=/package/zlib \
# --with-libmemcached-dir=/package/libmemcached \
# --disable-memcached-sasl # make
# make install

备注:

安装成功后会有如下类似提示:

Installing shared extensions:     /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/

这说明在 /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/ 该目录下会生成memcached.so

这个就是memcached.so所在目录。我们先记住这个目录。

开始配置php-memcached

打开php.ini

# vi /lnmp/php/etc/php.ini

在合适的位置添加如下
extension = /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so

------------------------------------------------------------

五、常见错误总汇

------------------------------------------------------------

5.1 Unable to load dynamic library 'memcached.so' - libmemcached.so.11: cannot open shared object file: No such file or directory in Unknown no line 0

说明:没有找到php的附加库memcached.so所需动态库libmemcached.so.11。出现上述错误一般是没有将libmemcached目录设置到环境变量里。

我们添加到环境变量LD_LIBRARY_PATH里就搞定了。

# export LD_LIBRARY_PATH=/package/libmemcached/lib:$LD_LIBRARY_PATH

转载:Centos7 从零编译配置Memcached的更多相关文章

  1. [原创]Centos7 从零编译配置Memcached

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

  2. [原创]Centos7 从零编译配置Redis

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

  3. 转载:Centos7 从零编译Nginx+PHP+MySql 二

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  4. 转载:Centos7 从零编译Nginx+PHP+MySql 序言 一

    这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先的一些 ...

  5. [原创]Centos7 从零编译Nginx+PHP+MySql

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  6. [原创]Debian9 从零编译配置Redis4.0

    序言 Redis 一.准备工作 1.1 更新系统安装包列表 没啥,就他喵想用个最新的. # apt update 1.2 创建需要使用的目录 创建目录source和web,分别用来放源码和编译后的文件 ...

  7. [原创]Centos7 从零配置Nginx+PHP+MySql

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  8. CentOS7 安装、配置 Memcached

    点击访问原文地址 介绍 Memcached 是一个分布式.高性能的内存缓存系统,通过缓存内存中的数据和对象,提高和加速动态 web 应用程序的性能.它主要用于加速对数据库重度使用的站点. Memcac ...

  9. centos7配置Memcached

    Memcached是一套分布式的高速缓存系统,用于提升网站访问速度,尤其对于一些大型的.需要频繁访问数据库的网站,访问速度提升效果十分显著. 1.安装memcached yum install mem ...

随机推荐

  1. Spring 01基础

    一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...

  2. Statement对象的executeUpdate返回信息

    int num = sta.executeUpdate(String sql);返回的是我们平时操作数据库客户端时控制台显示的影响行数

  3. BZOJ 1061: [Noi2008]志愿者招募

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 4064  Solved: 2476[Submit][Stat ...

  4. Linux下Source Insight的安装和汉化

    原创文章,转载请注明出处. 工欲善其事,必先利其器.Source Insight绝对是阅读C和C++代码的利器,另外,Source Insight的体量很小,安装便捷,显示直观,比vim+cscope ...

  5. background-size

    语法: background-size:length|percentage|cover|contain length:设置背景图像的宽度和高度, 第一个值为宽度,第二个值为高度. 如果只设置一个值,则 ...

  6. geolocation/ 百度地图api Geolocation 定位当前城市信息

    根据当前所处位置 定位所在城市信息 <html> <head> <meta charset="UTF-8" /> <title>js ...

  7. Java Win自动环境配置脚本

    @echo off :: TODO:设置java环境变量 :: Author: Sunky color 02 set "NewPath=%cd%" set "JavaHo ...

  8. 配置react native遇到的问题

    折腾了两天终于解决了问题,一开始用模拟器是报如下图的错 然后用真机的时候又报下图的错 这个错误网上有很多解决方法,说是要降级处理,将build.gradle中的1.3.1改成1.2.3,但是改完之后问 ...

  9. 安装第三方RPM仓库

    1.安装RepoForge源: CentOS 6.x [root@localhost /]# yum install http://pkgs.repoforge.org/rpmforge-releas ...

  10. (转载)哈夫曼编码(Huffman)

    转载自:click here 1.哈夫曼编码的起源: 哈夫曼编码是 1952 年由 David A. Huffman 提出的一种无损数据压缩的编码算法.哈夫曼编码先统计出每种字母在字符串里出现的频率, ...