memcache的简单应用
如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么提高网站访问速度,减少对数据库的操作;作为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>准备:参照配置
<2>开始实践,memcached主要有crud操作(即创建、读取、更新、删除值操作,具体可以查阅手册),下面弄个简单的设置值,然后读取值的操作
a.设置值页面
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
<?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.读取值页面
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?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.删除、更新例子:
01
02
03
04
05
06
07
08
09
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
|
<?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对象下还有许多方法,可以通过翻阅手册了解。
<3>多个memcached服务器设置,其实就比一个memcached服务器改变一点点,就是把多个memcached的服务器通过方法addserver添加到连接池中,这样设置完后,crud操作时,内部就会通过相应算法均衡连接相应服务器并执行相应操作中。
01
02
03
04
05
06
07
08
09
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 = 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 ;
}
?>
|
<4>memcache的访问是无用户状态,安全性需要考虑,一般通过放在内网,并通过防火墙限制外网访问memcache端口来达到安全
<5>通过修改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"
转载于:https://www.cnblogs.com/wangfenphph2/p/7051010.html
memcache的简单应用相关推荐
- php 内存队列,memcache构建简单的内存消息队列_PHP教程
本文章来给各位同学介绍使用memcache构建简单的内存消息队列,用一个比较不错的实例来给大家介绍,希望此方法对大家有帮助哦. memcache功能太简单了,只能 set get 和delete, 只 ...
- linux 安装memcache 到简单使用
安装: 下载安装 下载了,我到了其官方(http://memcached.org/),目前最新的下载版本是1.4.5 还要再安装libevent这个软件,从官方(http://monkey.org/~ ...
- Redis和Memcache的区别是什么
Redis和Memcache都是内存数据库,但它们之间还是有区别的,跟着ytkah看看Redis和Memcache的区别吧 Redis 支持多种数据结构,如string,list,dict,set,z ...
- memcache php mysql_PHP中的数据库二、memcache
在一个高并发的web应用中,数据库存取瓶颈一直是个大问题,一旦达到某个极限,数据库很容易崩溃,但是如果我们把常用的数据放到内存中,在需要的时候从内存中取,不光读取速度快,而且节约数据库IO. memc ...
- Redis简介 与Memcache的区别
redis 是一个基于内存的高性能key-value数据库. Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作, ...
- Redis和Memcache的区别总结
转自:http://www.jb51.net/article/50403.htm 总结一: memcache官方定义 Free & open source, high-performance, ...
- 什么是Memcache
apache+php+memcached+mysql访问加速方案 Memcache简单介绍: Memcached 是一个自由和开放源码.高性能.分布的内存对象缓存系统.可用于加速动态web应用程序,减 ...
- php多选批量修改数据库数据类型有哪些_php面试题之memcache和redis的区别
这篇文章介绍的内容是关于php面试题六之memcache和redis的区别,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Memcache和Redis区别: * Redis中,并不是所 ...
- Centos 下安装使⽤ Memcache
1.美图 2.安装 在 Centos 下安装使⽤用 yum 命令安装 Memcache ⾮非常简单: yum install -y memcached 启动: /usr/bin/memcached - ...
最新文章
- 为什么大家都不戳破深度学习的本质?!
- 智能车竞赛技术报告 | 双车接力组 - 大连海事大学 - 同舟拾贰队
- UA MATH571A QE练习 R语言 非参数回归 上
- 服务器内存一般多大_性能调优第一步,搞定服务器硬件选型
- 中国钠离子电池行业竞争需求状况及投资盈利分析报告2021-2027年版
- jetty9.x版本配置优化
- 『Python × C++』函数传参机制学习以及对比
- Spring Data JPA 从入门到精通~事务的处理及其讲解
- transition属性详细讲解
- 今天中午处理的一笔数据真的是好纠结 好心惊胆战
- C# winform项目开发规范
- java生成微信小程序二维码,前台扫描识别
- 对极几何基本概念与极线约束
- SQL去重的三种方法汇总​
- 态势感知“裸奔”的中国人 | 专访 360 张翀斌
- 红色警戒2修改器原理百科(六)
- 应用之星:H5制作又出一利器,分分钟刷爆朋友圈
- 借机,贷记,往帐,来帐
- 调节笔记本外接显示器亮度
- JAVA采用S7通信协议访问西门子PLC
热门文章
- php易宝支付扫码支付代码_谈谈扫码支付
- python mobilenetssd android_tensorflow+ssd_mobilenet实现目标检测的训练
- 计算机图形学算法详解,计算机图形学裁剪算法详解
- c# socket接收字符串_php 的 socket简单原理及实现
- 怎么调安卓软件的dpi_无线鼠标怎么选、性价比高的罗技鼠标(M系列)推荐
- python多维数组添加元素_numpy中三维数组中加入元素后的位置详解
- 什么影响matlab损失值,matlab – 在计算Logistic损失函数的值和梯度时避免数值溢出...
- 模板使用自定义类型_自定义虚幻图表_拓展蓝图功能
- js 串口通信mscomm接收undefined_VB串口通信应用开发入门知识讲解
- TED 演讲 How we can control the coronavirus pandemic? 我们如何控制新冠病毒的传播 ?