0

0

PHP数据库中memcache的用法

墨辰丷

墨辰丷

发布时间:2018-05-18 14:24:26

|

1630人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了php数据库操作memcache用法,结合实例形式详细分析了memcache的下载、安装、配置及相关使用技巧,需要的朋友可以参考下

具体如下:

在一个高并发的web应用中,数据库存取瓶颈一直是个大问题,一旦达到某个极限,数据库很容易崩溃,但是如果我们把常用的数据放到内存中,在需要的时候从内存中取,不光读取速度快,而且节约数据库IO。

memcache简介

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

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

memcache的mem是内存(memory),cache是缓存,结合是内存缓存的意思。我们应用memcache时,读取数据先从memcache内读取,若查找不到再去数据库里查找,并将数据存入memcache,待下次查找时便能轻易找到。

需要注意:

memcache是内存型的数据库 ,因为内存的关闭释放的特性,memcache也无法持久化存储内容;
memcache内部是分块存储,所以大于1M的数据也无法存储。
memcache依赖libevent库,安装前需确认已经安装了libevent库。
memcache是一个轻量级的内存型数据库,只支持key-value型的存储。
memcache中没有关于用户,密码的设置,所以在配置时要配置防火墙的端口限制连接,以达到安全的目的。
使用repcached也能轻易实现memcache的单master单slave主从复制。

memcache的应用场景

存储大量不需要持久存储或数据库内已存在不会变动的数据。
读取数据非常频繁数据,要求小于1M。
数据类型简单的key-value型数据。
计算好的结果和渲染后的网页模板文件。
因其原子递增性,可以用来计数。
因为可以设置数据过期时间的特性,存储期限数据。不过需要注意,memcache会在分配的内存不足时以最近最少使用原则(LRU)重用内存,可能会导致信息提前被删除。
用memcache存储session信息,以达到多服务器session共享。需要配置:php.ini:

session.save_handler = memcache //设置session的储存方式为memcache 
memcache.hash_strategy = "consistent"//设置memcache的hash算法为一致性哈希算法。 
session.save_path = "tcp:/ip:port" //设置session储存的位置,多台memcache用逗号隔开。

SmartB2B行业电子商务
SmartB2B行业电子商务

SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板

下载

memcache服务器的安装

memcache的安装简单,服务器可以在其官网http://www.memcached.org/下载,解压后在其目录下运行./configure -prefix=/path编译,然后make / make test / make install 得到可以直接执行的二进制文件。

使用./memcached命令即可开启服务器,其常用参数如下:

-p port 监听端口 (默认: 11211)
-d 以后台方式运行Memcached
-u username 运行Memcached的账户
-m n 最大的内存使用, 单位是MB,默认 64 MB
-c connections 最大连接数量, 默认是 1024

memcache的常用命令

用memcache客户端或telnet连接到memcache后,就可以对memcache进行操作了。

memcache数据结构简单,所以命令行命令也很少,下面以一条常用命令来简析一下命令格式:

add key flags expire_time length \r\n value

flags:是否压缩/序列化,通常为0。

expire_time:从存储后多久过期。以秒(s)为单位,最大为30天的长度,超过30天的长度被视为时间戳表示"到什么时候过期",若设为0表示永不过期。

length:value长度,输入长度回车之后,命令行会读取你接下来输入的length个字符。

set key flags expire_time length  //如果有值则覆盖原值,没有则新增,add在有值时会存储失败
get key               //获取key的值
replace key flags expire_time length// 替换一个已存在的key
append/preappend key flags expire_time length// 给key的value后面/前面添加新内容。
preappend key flags expire_time length   // 给key的value前面添加新内容。
inc/dec key [n]             //key的值递增/递减1/[n]
delete key               //删除一个key
flush_all [n]              //[在n秒后]删除全部数据
stats [options]             //获取memcache[有关某一项]的详细信息

PHP的memcache扩展及应用

在https://pecl.php.net/index.php搜索获取到所需的memcache扩展包。

linux系统,直接挑选版本(推荐最新stable稳定版)下载,解压后在解压目录下用phpize工具产生configure文件,并用它安装,安装完成后在/php.ini中添加extension。具体可参考前文:http://www.jb51.net/article/121314.htm。

windows下要点击链接右边的“windows logo DLL”链接,并在新打开的页面中,按照版本、32位/64位、线程安全/非线程安全来选择自己所需要的扩展,具体选项可以在phpinfo();页面看到。下载完成后,将其放入phppath/ext/目录下,然后在php.ini中添加extension=php_memcacache.dll;重启服务器完成安装。

在phpinfo()页面中看到memcache扩展后,说明安装成功,我们就可以在php脚本中使用关于memcache的类函数库了。

在手册中我们可以找到许多关于php的memcache扩展的使用,以下是一个典型的memcache使用流程。

$m=new Memcache();
$m->connect($host,$port);
$m->add($key,$value[,flags,$expire_time]);
$content=$m->get($key);
$m->close();

这是一个简单的memcache连接程序,在进行memcache分布式存储时,还需要用到$memcache->addServer()向memcache集群中添加服务器。

相关推荐:

ThinkPHP框架中使用Memcached缓存数据步骤详解

ThinkPHP框架中使用Memcached缓存数据的方法

php-memcached扩展安装

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

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

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

61

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

31

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

72

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

20

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

4

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

49

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

11

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
memcache基础课程
memcache基础课程

共6课时 | 1.6万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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