博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Memcache
阅读量:6939 次
发布时间:2019-06-27

本文共 4719 字,大约阅读时间需要 15 分钟。

1. 缘起:

在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,
这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。
但是Web中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。
此时Memcached或许是你想要的。
2. Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,
用于在动态应用中减少数据库负载,提升访问速度。
3. Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,
包括图像、视频、文件以及数据库检索的结果等。
4. Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,
使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态),
使用自己的页块分配器和哈希表,因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1)。
Danga Interactive为提升Danga Interactive的速度研发了Memcached。
5. Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问,
因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,
磁盘开销和阻塞的发生。
缓存数据:
1.在内存中缓存数据 2.数据形态以key->value结构 3.安全度非常差的

#Memcache安装

####1. Windows下安装操作

1 在网上下载memcached-1.2.1-win32.zip。解压放某个盘下面,比如在c:\memcached

2 在终端(cmd)下:
C:\Users\Administrator>memcached.exe -d install 安装
C:\Users\Administrator>memcached.exe -d uninstall 卸载
C:\Users\Administrator>memcached.exe -d start 启动
C:\Users\Administrator>memcached.exe -d stop 停止
memcached.exe -h 获取所有帮助
3 在启动之后连接:
C:\Users\Administrator>telnet 127.0.0.1 11211 --连接memcache端口11211
使用quit退出。
4 其他命令参数:
启动Memcache 常用参数
-p <num> 设置端口号(默认不设置为: 11211)
-U <num> UDP监听端口(默认: 11211, 0 时关闭)
-l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,
有安全隐患,若设置为127.0.0.1就只能本机访问)
-d 独立进程运行
... -d start 启动memcached服务
... -d restart 重起memcached服务
... -d stop|shutdown 关闭正在运行的memcached服务
... -d install 安装memcached服务
... -d uninstall 卸载memcached服务
-u <username> 绑定使用指定用于运行进程<username>
-m <num> 允许最大内存用量,单位M (默认: 64 MB)
-P <file> 将PID写入文件<file>,可以使得后边进行快速进程终止, 需要与-d 一起使用
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
2. PHP开启Memcache模块
1.phpinfo()检测是否有memcache扩展
2.php扩展目录 extension_dir
php_memcache.dll放置到php扩展目录下
3.php配置文件修改
extension=php_memcache.dll
4.重启apache服务

####2. Linux下安装操作

安装memcache服务
memcache二进制包
memcached-1.4.4-3.el6.i686.rpm
a.首先挂载ISO镜像文件 DVD1.ISO
mount /dev/sr0 /mnt/cdrom/
b.安装memcached
yum -y install memcached
c.添加memcache用户
useradd memcache
d.启动memcache服务
memcached -d -m 128 -l 127.0.0.1 -p 11211 -u memcache
查看端口
netstat –tunpl|grep :11211
win+r打开命令行窗口 连接测试
telnet 192.168.185.252 11211
注意:
如果输入telnet命令的时候 出现telnet不是内部命令,修改操作如下:
windows系统->控制面板->程序和功能->打开和关闭Windows功能->勾选 telnet客户端
e.设置开机自启动
chkconfig memcached on
f.如何杀掉后台进程
pkill memcached
memcache服务安装完之后,为php安装memcache扩展
首先下载php7.0支持的扩展包 pecl-memcache-php7.zip
地址:https://github.com/websupport-sk/pecl-memcache/archive/php7.zip
1. 将pecl-memcache-php7.zip文件传到服务器上 /root
2. 解压文件后进入此目录
unzip pecl-memcache-php7.zip
cd pecl-memcache-php7
3. 由于目录中没有configure配置环境文件
执行 /usr/local/php/bin/phpize 来准备一个编译环境
4. 配置: 加配置
./configure --with-php-config=/usr/local/php/bin/php-config
5. make && make install 编译和安装
6. 安装成功后就会产生一个memcache.so文件
/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
7. 修改php配置文件
vim /usr/local/php/etc/php.ini
添加以下信息
722行 extension_dir='/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/';
extension="memcache.so";
8. 重启apache服务即可(查看phpinfo())

#### 3. Memcache相关操作

stats 查看状态

STAT pid 1552 服务进程的进程ID
STAT uptime 3792 服务从启动到当前所经过的时间,单位是秒。
STAT time 1262517674 服务器所在主机当前系统的时间,单位是秒。
STAT version 1.2.6 组件的版本。这里是我当前使用的1.2.6。
STAT pointer_size 32 服务器所在主机操作系统的指针大小,一般为32或64.
STAT curr_items 1 表示存放当前的所有缓存对象的数量。不包括已经从缓存中删除的对象。
STAT total_items 2 表示从启动到当前,系统存储过的所有对象数量,包括已经删除的对象。
STAT bytes 593 表示系统存储缓存对象所使用的存储空间,单位为字节。
STAT curr_connections 2 表示当前系统打开的连接数。
STAT total_connections 28 表示从memcached服务启动到当前时间,系统打开过的连接的总数。

####4.set 写入缓存

数据操作命令
格式:<命令> <键> <标记> <有效期> <数据长度>
其中:
<键> -key,是发送过来指令的key内容
<标记> - flags,是调用set指令保存数据时候的flags标记
有效期:是数据在服务器上的有效期限,如果是0,则数据永远有效,单位是秒
数据的长度,block data 块数据的长度,一般在这个个长度结束以后下一行跟着block data数据内容,
举例说明:
set 键名 标记 有效时间 数据的长度
set love 10 0 3
you
键名
最大不能超过250个字符
标记
是一个16位的无符号的整数,该标志将和需要存储的数据一起存储,并在客户端get数据时返回
有效时间
单位为秒
数据长度
单位是字节
数据的值
最大不能超过1024kb
发送完数据以后,客户端一般等待服务器端的返回,服务器端的返回:
STORED 数据保存成功
NOT_STORED 数据保存失败,是因为服务器端这个数据key已经存在

####5.get 获取缓存

get 键名
get love

####6.delete 删除缓存

delete 键名
delete love
flush_all清空所有缓存

#PHP与Memcache的使用

//实例化Memcache
$memcache = new Memcache();
//连接Memcache
$memcache->connect('127.0.0.1','11211');
$memcache->addServer('127.0.0.1','11211');
//保存数据
$memcache->set('name','xiaohigh',MEMCACHE_COMPRESSED,60);
//获取数据
$memcache->get('name');
//清除所有数据
$memcache->flush();

#PHP Memcahe类

connect(ip, port) 连接一台memcache服务器
addServer(ip, port) 添加一台memcache服务器
getExtendedStats() 获取连接池中所有的服务器信息
getServerStatus(host, port) 获取指定服务器的连接状态
add(key, value, tag, expires) 添加一条数据
replace(key, value, tag, expires) 修改一条数据
set(key, value, tag, expires) 添加或修改一条数据
get(key) 根据键获取值
delete(key) 删除指定一条数据
flush() 删除全部
close() 关闭连接
getStats() 获取memcache服务器信息 返回数组
getVersion() 获取memcache服务器版本号

转载于:https://www.cnblogs.com/zhony/p/10635108.html

你可能感兴趣的文章
Shpinx在PHPCMS里的使用及配置
查看>>
Linux Oracle Rac 10G 搭建& Patch
查看>>
Apache与Nginx网络模型对比
查看>>
Java 二重循环实现对象去重
查看>>
[Unity3d]socket通信 切换到web版本时报错SecurityException解决办法
查看>>
修改windows service的启动类型
查看>>
快速构建Windows 8风格应用9-竖直视图
查看>>
Chrome浏览器设置不缓存
查看>>
YII2出现SQLSTATE[HY000] [2002] No such file or director
查看>>
搭建nginx+3*tomcat环境 实现session共享
查看>>
毕业只是开始:你准备好了吗?
查看>>
交互式自动化脚本模板
查看>>
顺丰和菜鸟对用户数据寸土不让 战争平息需监管层
查看>>
软件测试LR通用性能分析流程
查看>>
如何升级phpmyadmin
查看>>
hibernate添加时间问题
查看>>
深入浅出CChart 每日一课——第十三课 似曾相识之云图,乱花渐欲迷人眼
查看>>
Oracle操作的部分ddl语句
查看>>
Excel 中使用SQL 语句查询数据(四)
查看>>
序列动作Sequence
查看>>