Memcache适合做缓存,是一款管理内存的很小的软件,实现对内存数据的管理,一般我们用memcache存储临时数据,因为内存不能储存永久化的数据,内存里面的数据,断电就消失了。

memcache可以存储任何的数据类型,数值,字符串,数值以及音频、视频等。

  memcache主要是做数据库和客户端的中间层来使用,memcache做缓存能大大提高数据的访问速度,减少客户端对数据库的请求。因为大部分时间将从memcache里面直接获取我们存储的数据。memcache可以使用多台服务器做分布式存储,这样实现多台服务器的高效工作。

memcache安装方法:

1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

2.先安装libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure –prefix=/usr
# make
# make install

3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。

4.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure –with-libevent=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,

5.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

启动Memcached服务
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid

-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

常见问题:

1.如果启动Memcached服务的时候遇到了

/usr/local/bin/memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory;

解决方案:

[root@localhost bin]# LD_DEBUG=libs memcached -v 
[root@localhost bin]# ln -s /usr/lib/libevent-1.2.so.1 /usr/lib64/libevent-1.2.so.1
[root@localhost bin]# /usr/local/bin/memcached -d -m 100 -u root -p 12000 -c 1000 -P /tmp/memcached.pid
[root@localhost bin]# ps -aux

可以看到启动的Memcached服务了

安装php操作memcached服务器的扩展库:

php连接memcached缓存服务器的客户端有两个,一个是memcache是比较底层的开发库,memcached是比较新的开发库,php安装这两个扩展中的任意一个后就可以在编写php代码时使用的memcached缓存数据,达到缓存php执行的结果

1 安装memcache扩展

->下载memcache源码包(下载地址:http://pecl.php.net/package/memcache)

wget http://pecl.php.net/get/memcache-3.0.8.tgz

->解压缩

tar zxvf memcache-3.0.8.tgz

cd  memcache-3.0.8

./configure --enable-memcache=/usr/local/memcached --with-php-config=/usr/local/php5/bin/php-config --with-apxs2=/usr/sbin/apxs

make

make install

->make install之后提示

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/

->然后修改php.ini,

把 extension_dir = "./" 修改为 extension_dir = "/usr/local/php5/lib/php/extensions/"

->然后添加一行
  extension="no-debug-non-zts-20100525/memcache.so"

2 安装memcached扩展(略)

Memcached客户端命令

stats:服务器运行状态信息
add:添加键值对到memcache
set:添加键值对,如果键已经存在就修改
格式:set <键> <标记> <有效期> <数据长度> <值>
标记--没什么实际用处,随便写个数字就行
有效期--单位秒,0代表永久有效
数据长度:在客户端写命令要指定数据长度,在php扩展里面不用指定,在客户端存储的数据必须跟指定长度相等 get:获取数据,格式: get <键>
delete:删除指定数据 格式:delete <键>
flush_all:清空所有数据

Memcached错误提示命令

ERROR:普通错误,比如指令错误
CLIENT_ERROR:客户端错误
SERVER——ERROR:服务器端错误

 

PHP使用memcache扩展库操作memcached

//创建实例
$m = new memcache;
//连接memcached服务器
$m->connect('主机IP','端口号');
//增加一个条目到缓存服务器
$m->add('key','value',MEMCACHE_COMPRESSED,$expire)
说明:$expire -- 有效期单位是秒,设置为0表示永远不过期,但是秒数不超过30天,如果超过30天,使用time()+超过30天的秒数
MEMCACHE_COMPRESSED -- 指定压缩
//删除一个条目
$m->delete('key',$timeout=);
说明:第二个参数是指定多久后删除,不填默认是立即删除
//清洗(删除)已经存储的所有的元素
$m->flush();
//返回对应key的值,如果不存在返回false
$m->get('key');
说明:key可以是单个key或key数组
//存储一个key-value到服务器,如果key存在就修改
$m->set($key,$value,MEMCACHE_COMPRESSED,$expire);
说明:资源类型变量(比如文件或连接)不能被存储在缓存中,因为它们在序列化状态不能被完整描述
//关闭连接
$m->close();

 

memcache分布式存取

  memcache分布式存取的原理是同时连接多台memcached服务器,让数据均匀的分布到每台服务器,从而提高memcache缓存的存取效率。memcached会把数据分派到每台服务器里面,我们不需要管具体怎么分派和读取数据,memcached自动帮我们完成。memcache的分布式存取很方便,只需要一个把服务器添加到连接池里面就完成了。

使用php的memcache扩展库来添加服务器到连接池里面

//向连接池里面添加一台或者多台服务器,可以通过参数来指定每台服务器的权重
$m->addServer('IP',port);
$m->addServer('IP2',port2);
...

memcache安全防护

memcache没有自带用户验证功能,这样每个用户都可以直接连接memcached服务器,完全的暴露数据是不安全的,我们需要做好安全防护措施,一般用两种方式来防护:1 启动memcached服务器的时候绑定IP,指定的IP才可以访问

2 设置防火墙

Memcache入门知识的更多相关文章

  1. [置顶] Mysql存储过程入门知识

    Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...

  2. 移动H5开发入门知识,CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  3. H5移动端开发入门知识以及CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  4. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  5. Java基础入门知识

    Java编程入门知识   知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...

  6. zabbix入门知识

    zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...

  7. React的入门知识与概念【1】

    回顾在以往的项目开发中,从最初的使用的原生html+js+css+jquery开发,到后来随着项目功能的增加,也渐渐学习了Vue.js框架的开发,以及Vue.js的全家桶Axios,Vue-route ...

  8. 我的Python笔记补充:入门知识拾遗

    声明:本文整理借鉴金角大王的Python之路,Day1 - Python基础1,仅供本人学习使用!!! 入门知识拾遗 一.bytes类型 二.三元运算 1 result = 值1 if 条件 else ...

  9. 浅谈TCP IP协议栈(一)入门知识【转】

    说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...

随机推荐

  1. 为什么要采用外部js文件

    这篇文章主要讲的是为什么要采用外部js文件,有什么好处. 为什么不把js内嵌在html中呢,这样不是好分析吗?对,这样你是好分析,同样的别人呢?不内嵌在html中有如下原因:   安全性: 只要查看页 ...

  2. javascript获取host

    document.writeln(location.protocol); document.writeln(location.origin); //包括端口号 document.writeln(loc ...

  3. 配色问题lingo实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang !调配颜色 要依次调配红.兰.白.黑.黄五种颜色 红  兰  白  黑  黄 红  0  6  1 ...

  4. C语言实现的OOP

    我倒不是为了OOP而OOP,实在是OOP的一些特征,例如封装,多态其实是软件工程思想,这些思想不分语言,遵循了这些思想可以使得程序更有弹性,更易修改和维护,避免僵化,脆弱 shape.h 该文件定义的 ...

  5. 转载收藏之用 - 微信公众平台开发教程(六):了解MessageHandler

    上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK>我们讲述了如何使用Senparc.Weixin.MP SDK ...

  6. 液晶顯示器 LCD (Liquid Crystal Disply )

    常見的液晶顯示器按物理結構分為四種: (1)扭曲向列型(TN-Twisted Nematic): (2)超扭曲向列型(STN-Super TN): (3)雙層超扭曲向列型(DSTN-Dual Scan ...

  7. rsyslog input 不支持变量

    input(type="imfile" File="/usr/local/apache-tomcat-7.0.55_8082/logs/localhost_access_ ...

  8. unix c 05

    dup和dup2用于复制文件描述符,区别在于dup2可以指定新的文件描述符的数值,如果新的文件描述符的值已经被使用,dup2会关闭掉后进行复制. dup和dup2 不会复制文件表,只是文件描述符的复制 ...

  9. 定位于定位优化(iOS)

    定位于定位优化 1.定位的方案 最近在做项目, 遇到了一个问题就是如何让iOS7~~iOS9的定位.因为项目需求只是需要获取用户所在的城市, 而不用十分具体详细的精确定位, 服务端考虑用区号, 作为标 ...

  10. 基于Android的物理类游戏,源代码(JAVA)分享

    游戏视频DEMO:http://v.youku.com/v_show/id_XNTM5MzM1Mzg0.html?from=s1.8-1-1.2 说明:一个自己做的Android上的物理类游戏,物理引 ...