PHP环境下Memcache的使用方法

原文:PHP环境下Memcache的使用方法

原文地址:http://www.2cto.com/kf/201503/384967.html

如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么提高网站访问速度,减少对数据库的操作;作为PHP开发人员,我们一般能想到的方法有页面静态化处理、防盗链、CDN内容分发加速访问、mysql数据库优化建立索引、架设apache服务器集群()、还有就是现在流行的各种分布式缓存技术:如memcached/redis;

 

1.什么是Memcached?

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

b.Memcached的键key一般是字符串,该值不能重复;value可以放入字符串、数组、数值、对象、布尔,二进制数据和图片视频

c.Memcached默认服务端口是11211

2.PHP使用Memcached步骤

<1>准备:下载Memcached服务安装包:memcached-1.2.6-win32-bin.7z和访问Memcached服务的dll库:php_memcache.dll

www.memcached.org(官网进不去好像,可以从其他地方下载)

<2>解压包memcached-1.2.6-win32-bin.7z(可以解压完复制放到web服务器同级目录),然后操作cmd,进入到刚才解压的目录用命令安装:memcached.exe -d install

<3>安装完(判断是否安装完毕可以到服务列表里面查看是否有memcached服务),然后cmd用命令启动:memcached.exe -d start

具体操作如下:

 

<4>启动完memcached服务后,再把下载的php_memcache.dll放到web服务器php5目录下的ext目录下

<5>在php.ini里面修改,加载扩展库php_memcache.dll,然后重启apache服务器

<6>开始实践,memcached主要有crud操作(即创建、读取、更新、删除值操作,具体可以查阅手册),下面弄个简单的设置值,然后读取值的操作

a.设置值页面

 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<!--?php

header("Content-type:text/html;charset=utf-8");

//创建Memcache对象

$mem
=
newMemcache(); 

//连接Memcache服务器

if(!$mem--->connect("127.0.0.1"))
{

    echo"连接Memcache服务器失败!";

}

 

//设置,'myword'参数代表键key,'hello
world'代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒

if($mem->set('myword','hello
world'
,MEMCACHE_COMPRESSED,50))

{

    echo"设置值成功!";

}

 

?>

 

 

注:如果值在内存存放的时间要超过30天,要用时间戳来设置100天:如time()+3600*24*100;设置0则表示永不过期

b.读取值页面

 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<!--?php

header("Content-type:text/html;charset=utf-8");

$mem
=
newMemcache(); 

if(!$mem--->connect("127.0.0.1"))
{

    echo"连接Memcache服务器失败!";

}

 

//读取键myword值

$value
= $mem->get(
'myword');

if(!$value)

{

    echo"读取失败!";

}

else

{

    echo"读取的值=".$value;

}

c.删除、更新例子:

 

 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

<!--?php

header("Content-type:text/html;charset=utf-8");

//创建Memcache对象

$mem
=
newMemcache(); 

//连接Memcache服务器

if(!$mem--->connect("127.0.0.1"))
{

    echo"连接Memcache服务器失败!";

}

 

//设置,'myword'参数代表键key,'hello
world'代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒

if($mem->set('myword','hello
world'
,MEMCACHE_COMPRESSED,50))

{

    echo"设置值成功!";

}

 

//读取键myword值

$value
= $mem->get(
'myword');

if(!$value)

{

    echo"读取失败!";

}

else

{

    echo"读取的值=".$value;

}

 

//更新键值

$mem->replace('myword','hello
everybody!'
);

 

$value
= $mem->get(
'myword');

if(!$value)

{

    echo"读取失败!";

}

else

{

    echo"读取的值=".$value;

}

 

//删除键myword值

$mem->delete('myword');

 

$value
= $mem->get(
'myword');

if(!$value)

{

    echo"读取失败!";

}

else

{

    echo"读取的值=".$value;

}

 

//关闭

$mem->close(); 

 

 

 

?>

注:mem对象下还有许多方法,可以通过翻阅手册了解。

 

<7>多个memcached服务器设置,其实就比一个memcached服务器改变一点点,就是把多个memcached的服务器通过方法addserver添加到连接池中,这样设置完后,crud操作时,内部就会通过相应算法均衡连接相应服务器并执行相应操作中。

 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<!--?php

header("Content-type:text/html;charset=utf-8");

//创建Memcache对象

$mem
=
newMemcache();

//添加多台memcached服务器

$mem--->addserver('192.168.0.1',11211);

$mem->addserver('192.168.0.2',11211);

$mem->addserver('192.168.0.3',11211);

$mem->addserver('192.168.0.4',11211);

 

 

//设置,'myword'参数代表键key,'hello
world'代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒

if($mem->set('myword','hello
world'
,MEMCACHE_COMPRESSED,50))

{

    echo"设置值成功!";

}

 

//读取键myword值

$value
= $mem->get(
'myword');

if(!$value)

{

    echo"读取失败!";

}

else

{

    echo"读取的值=".$value;

}

 

?>

 

<8>memcache的访问是无用户状态,安全性需要考虑,一般通过放在内网,并通过防火墙限制外网访问memcache端口来达到安全

<9>通过修改php.ini,可以把session的值放入memcache服务器中

session.save_handler = files改成session.save_handler = memcached

session.save_path = "N;MODE;/path"改成 session.save_path = "tcp://127.0.0.1:11211"

时间: 2024-12-09 20:08:18

PHP环境下Memcache的使用方法的相关文章

在IE6环境下使用min-height的方法

 前段时间写有一篇"在IE6环境下使用min-width的方法",得到众人批评,呵呵,确实只是研究而已,不怎么实用. min-height实现起来相对容易,cssplay上已经给出了方法:/* for understanding browsers */.container { width:20em; padding:0.5em; border:1px solid #000; min-height:50px; height:auto;}/* for Internet Explorer *

PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法_php实例

PHP用mb_string函数库处理与windows相关中文字符 昨天想批处理以前下载的一堆文件,把文件里的关键内容用正则匹配出来,集中处理.在操作文件时遇到一个问题,就是windows操作系统中的编码问题. 我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我们在开发过程中,IDE里的编码则是UTF-8,(这里不讨论为什么等等问题, 只考虑怎么把编码转变成一样的)所以导致我写的UTF-8编码的正则模式字符串中的中文在gbk编码的文件中并不能正确匹配. 一开始,我并

在LINUX环境下架设代理服务器的方法

代理服务器在目前的http://www.aliyun.com/zixun/aggregation/16327.html">网络环境中应用较广,并在Internet里扮演着一个很重要的角色.今天我就给大家介绍一种在LINUX环境下架设代理服务器的方法,希望能够对各位朋友有所帮助. 代理服务器简介 在架设前,让我们先来了解一下代理服务器的特点.我们这样来理解代理服务器,假设电脑A需要电脑B的数据,电脑A先与电脑C建立连接,电脑C接收到电脑A的数据请求后,再与电脑B建立连接,下载电脑A所请求的数

php在apache环境下实现gzip配置方法_php技巧

本文实例讲述了php在apache环境下实现gzip配置方法.分享给大家供大家参考.具体如下: 1.conf/httpd.conf 1) 去掉#LoadModule headers_module modules/mod_headers.so前面的注释#, 2) 添加LoadModule deflate_module modules/mod_deflate.so, 3) 去掉#Include conf/extra/httpd-vhosts.conf前面的注释#.  2.conf/extra/htt

车联网环境下交通信息传输保障方法研究

车联网环境下交通信息传输保障方法研究 吉林大学 闫超 本文紧紧围绕车联网环境下交通信息海量.时变.多源的特点,设计了车联网的系统结构:分析了车载移动自组织网络的信息节点拓扑结构变化规律,通过研究车载自组织网络,提出基于交通信息传输环境维护方法和车间交通信息传输方法的车联网环境下交通信息传输保障方法,并分析了相关方法的性能,改进了传统移动自组织网络相关信息传输协议的缺陷,使得交通信息传输的稳定性和效率大大提高,同时控制了网络通信开销和能耗. 车联网环境下交通信息传输保障方法研究

Oracle 11g RAC环境下Private IP修改方法及异常处理

Oracle 11g RAC环境下Private IP修改方法及异常处理 Oracle 11g RAC环境下Private IP修改方法及异常处理 一. 修改方法 1. 确认所有节点CRS服务以启动 # olsnodes -s -n –i host1 1 host1-vip Active host2 2 host2-vip Active 2. 修改Private IP配置信息 如果之前只有一个私有网卡,则直接删除时会报错,如:PRIF-31: Failed to delete the speci

vmi:scm环境下的库存管理方法

一.革新传统库存控制方法的必要性 近年来,供应链管理(Supply Chain Management.简称SCM)在国内外日益受到人们的关注和重视,许多物流企业也开始重视探讨这种新的管理理念在库存管理中的应用.所谓供应链管理是以各种技术尤其是信息技术为依托,在供应链各节点间建立一种战略伙伴关系,实现从原材料供应商.制造商.分销商.零售商直到最终用户的商流.物流.信息流.资金流在整个供应链上的畅通无阻的流动,最终达到双赢甚至是多赢目的的过程. 在供应链管理环境下,供应链各个环节的活动都应该是同步进

ubuntu+php环境下的Memcached 安装方法_Linux

目前被很多系统所使用,例如Flick.Twitter等.这是一套开放源代码软件,以BSD license授权发布.下面记录一下在lamp环境下的Memcached安装.关于Memcached的应用,这里有两篇不错的文章:<应用 memcached 提升站点性能>.<Discuz!的Memcache缓存实现> 使用apt安装memcached apt-get install memcached 启动memcached 1. 终端下使用命令 memcached就可以启动 .例如 mem

windows环境下memcache配置方法 详细篇_win服务器

将memcache服务器安装包解压到C:\memcached文件夹后,使用cmd命令窗口安装. 1>开始>运行:CMD(确定) 2>cd C:\memcached(回车) 3>memcached -d install(回车 这步执行安装) 4>memcached -d start(回车 这步执行启动memcache服务器,默认分配64M内存,使用11211端口) 此时memcache服务器已经可以正常使用了. 在服务端运行: # ./memcached -d -m 2048