博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos7 从零编译配置Memcached
阅读量:6689 次
发布时间:2019-06-25

本文共 3751 字,大约阅读时间需要 12 分钟。

hot3.png

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

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

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

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

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

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

 

一、准备工作

 

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

# mkdir /source/# mkdir /package/

 

 

二、memcached(服务端篇)

首先先安装memcached依赖库libevent。

 

2.1 安装libevent

[官方网站] 

命令流程:

复制代码

# 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

[官方网站] 

命令流程:

复制代码

# 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到自己的项目里调用相关对象就行了。

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

使用方法如下:

复制代码

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

[官方网站] 

命令流程:

# 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

[官方网站] 

命令流程:

复制代码

# 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

[官方网站] 

命令流程:

复制代码

# 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

[官方网站] 

命令流程:

复制代码

# 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

 

转载于:https://my.oschina.net/lambert519/blog/875701

你可能感兴趣的文章
面向接口编程的好处和优点
查看>>
放过设计模式吧
查看>>
架构师必看-架构之美第14章-两个系统的故事:设计之城(一)
查看>>
从c++转到Python需要注意的地方
查看>>
mysql 利用触发器(Trigger)让代码更简单
查看>>
[译]ASP.NET Core 2.0 视图引擎
查看>>
(原)InsightFace及其mxnet代码
查看>>
OpenCV学习:实现简单的图像叠加
查看>>
Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
查看>>
java.io包的总体框架图(转)
查看>>
VKDevTool App黑盒调试工具
查看>>
那个你身边悄悄离职的人去哪儿了?IT人才流动大盘点
查看>>
精读《手写 SQL 编译器 - 智能提示》
查看>>
Java多线程干货系列—(四)volatile关键字| 掘金技术征文
查看>>
我们来翻翻元素样式的族谱-getComputedStyle
查看>>
Hessian HTTP POST访问时,Nginx返回411问题
查看>>
Redux进阶系列2: 如何合理地设计State
查看>>
[译] 部署!=发布(第二部分)
查看>>
数据结构和算法面试题系列—C指针、数组和结构体
查看>>
Android解析ActivityManagerService(一)AMS启动流程和AMS家族
查看>>