PHP之分布式缓存memcached熟悉和操作_PHP教程

php中文网
发布: 2016-07-13 09:58:46
原创
773人浏览过

PHP之分布式缓存memcached熟悉和操作

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

 

1.什么是Memcached?

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

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

立即学习PHP免费学习笔记(深入)”;

c.Memcached默认服务端口是11211

2.PHP使用Memcached步骤

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

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

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

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

具体操作如下:

\

 

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

\

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

\

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

a.设置值页面

存了个图
存了个图

视频图片解析/字幕/剪辑,视频高清保存/图片源图提取

存了个图 17
查看详情 存了个图

 

<!--?php
header("Content-type:text/html;charset=utf-8");
//创建Memcache对象
$mem = new Memcache();  
//连接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.读取值页面

 

<!--?php
header("Content-type:text/html;charset=utf-8");
$mem = new Memcache();  
if(!$mem--->connect("127.0.0.1")) {
    echo "连接Memcache服务器失败!";
}

//读取键myword值
$value = $mem->get('myword');
if(!$value)
{
    echo "读取失败!";
}
else
{
    echo "读取的值=".$value;
}
登录后复制

c.删除、更新例子:

 

 

<!--?php
header("Content-type:text/html;charset=utf-8");
//创建Memcache对象
$mem = new Memcache();  
//连接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对象下还有许多方法,可以通过翻阅手册了解。

 

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

 

<!--?php
header("Content-type:text/html;charset=utf-8");
//创建Memcache对象
$mem = new Memcache(); 
//添加多台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;
}

?>
登录后复制

 

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

通过修改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"

 

 

 

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/976801.htmlTechArticlePHP之分布式缓存memcached熟悉和操作 如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么提高网站访问速度,减少对数据库的...
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号