PHP缓存系统 - PHP使用 Memcache

一、基本信息

先言:

Memcached 已经可以支持 C/C++、Perl、PHP、Python、Ruby、Java、C#、Postgres、Chicken Scheme、Lua、MySQL 和 Protocol 等语言客户端。


本文只介绍 Memcached 的简单使用。

1.1 什么是 Memcached

官方介绍:

点我进入 - Memcached 官网

免费和开源, 高性能, 分布式内存对象缓存系统, 本质上是通用的, 但旨在通过减轻数据库负载来加速动态 Web 应用程序。


Memcached 是一种内存键值存储, 用于存储来自数据库调用、API 调用或页面渲染结果的任意数据(字符串、对象)的小块。


Memcached 简单而强大。其简单的设计促进了快速部署、易于开发, 并解决了大数据缓存面临的许多问题。它的 API 适用于大多数流行的语言。


说白了就是 把数据存到内存当中, 通过内存访问提高访问速度。

1.2 键值信息

键(key): 键名不可重复, 一般为字符串, 最大不可超过 128 个字节。

值(value): 值的格式可为 字符串、数值、数组、对象、布尔、二进制、NULL

二、安装 Memcached

本文安装流程仅做参考。

2.1 Windows 安装

Runoob网站 - 安装流程

2.2 Linux 安装

根据自身系统选择对应的安装方式。

# 1. Ubuntu/Debian 安装方式
	# 1.1 安装依赖库
	sudo apt-get install libevent libevent-devel
	
	# 1.2 安装 memcached
	sudo apt-get install memcached
	
# 2. Redhat/Fedora/Centos 安装方式
	# 2.1 安装依赖库
	yum install libevent libevent-devel
	
	# 2.2 安装 memcached
	yum install memcached
	
# 3. 源代码安装(依次执行下列命令)
	# 3.1 安装依赖库
	wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
	tar -zxvf libevent-2.1.12-stable.tar.gz
	cd libevent-2.1.12-stable.tar
	./configure --prefix=/usr/local/libevent-2.1.12 && make && make install

	# 3.2 安装 memcached
	wget http://memcached.org/latest
	tar -zxvf latest
	cd memcached-1.x.x
	./configure && make && make test && sudo make install
# 查看 memcached 安装位置, 根据自己的安装位置调整后进行启动
whereis memcached

# 前台启动
/usr/bin/memcached -p 11211 -m 64m -u 用户名 -vv

# 或 后台启动
/usr/bin/memcached -p 11211 -m 64m -u 用户名 -d -l 指定IP地址

三、PHP 使用 Memcached

通过 phpinfo() 查看是否成功安装 memcached

3.1 创建并连接 Memcached

列举一些常用的操作, 实例都是面向对象操作。

<?php
    # 1. 创建 Memcached 对象
    $memcached = new Memcached();
    
    # 2. 定义 Memcached 服务器
    # $memcached->addServer('服务器地址', '端口'); # 单台服务器
    # $memcached->addServers([['服务器地址1', '端口1'],['服务器地址2', '端口2']]); # 多台服务器

	# 例: 
    $memcached->addServer('127.0.0.1', '11211');

3.2 add() 增加一条缓存

<?php
    # 使用 add() 方法, 如果缓存名称已存在, 则新值不会覆盖旧的值
    # 缓存时长默认为 0 , 永不过期
    # 格式: $memcached->add('缓存名称', '缓存值', '缓存时长');
    # 例: 
    $memcached->add('is_comment', false, 86400);
    $memcached->add('site_config', ['Tel'=>'400-123456', 'address'=>'北京'], 3600);

3.3 replace() 替换已存在的缓存

<?php
    # 如果缓存名称不存在, 则返回 false
    # 格式: $memcached->replace('缓存名称', '缓存值', '缓存时长');
    # 例: 
    $memcached->replace('is_comment', true, 86400);

3.4 set() 增加一条缓存

<?php
    # 常用 set() 方法来增加一条缓存
    # set() 相当于 add() 与 replace() 的结合, 作用: 不存在则创建, 存在则替换
    # 格式: $memcached->set('缓存名称', '缓存值', '缓存时长');
    # 例: 以下 会获取到 "帮助信息2"
    $memcached->set('help_info', '帮助信息');
	$memcached->set('help_info', '帮助信息2');

3.5 get() 获取缓存

<?php
    # 格式: $memcached->get('缓存名称');
    # 例: 
    $memcached->get('is_comment');

3.6 delete() 删除缓存

<?php
    # 格式: $memcached->delete('缓存名称');
    # 例: 
    $memcached->delete('is_comment');

3.7 flush() 清空缓存

<?php
    # 清空所有缓存, 慎用
    $memcached->flush();

3.8 increment() 值加法

<?php
    # 格式: $memcached->increment('缓存名称', '需要增加的数');
    
    # 例: 
    $memcached->set('number', 2); # 设置初始值为 2
	$memcached->increment('number', 5); # 每次请求都增加5

3.9 decrement() 值减法

<?php
    # 格式: $memcached->decrement('缓存名称', '需要减少的数');
    
    # 例: 
    $memcached->set('number', 2); # 设置初始值为 2
	$memcached->decrement('number', 5); # 每次请求都减少5

3.10 setMulti() 批量增加缓存

<?php
    # 格式: $memcached->setMulti(键值对二维数组, 缓存时长);
    # 缓存时长默认为 0 , 永不过期
    # 例: 
    $memcached->setMulti(['key1'=>'value1', 'key2'=>'value2']);

3.11 getMulti() 批量获取缓存

<?php
    # 格式: $memcached->getMulti(缓存名一维数组);
    # 例: 
    $cache_array = $memcached->getMulti(['key1', 'key2']);

3.12 deleteMulti() 批量删除缓存

<?php
    # 格式: $memcached->deleteMulti(缓存名一维数组);
    # 例: 
    $memcached->deleteMulti(['key1', 'key2']);

3.13 获取执行结果

<?php
    $memcached->getResultCode(); # 0 成功
    $memcached->getResultMessage(); # SUCCESS 成功

3.14 其他

<?php
    # 获取 Memcached 版本信息
    $memcached->getVersion();
    
    # 获取服务器统计信息
    $memcached->getStats();

四、实例代码

<?php

    # 1. 创建 Memcached 对象, 并连接 Memcached 服务器
    $memcached = new Memcached();
    $memcached->addServer('127.0.0.1', '11211');
    
    # 2. 增加一条缓存
    $memcached->add('is_comment', false, 86400);
    $memcached->add('site_config', ['Tel'=>'400-123456', 'address'=>'北京'], 3600);
    
    # 3. 替换已存在的缓存
    $memcached->replace('is_comment', true, 86400);
    
    # 4. 增加一条缓存, 不存在则创建, 存在则替换
    $memcached->set('help_info', '帮助信息');

    # 5. 获取缓存
    var_dump($memcached->get('is_comment'));
    var_dump($memcached->get('site_config'));
    var_dump($memcached->get('help_info'));
    
    # 6. 删除缓存
    $memcached->delete('is_comment');
    var_dump($memcached->get('is_comment'));
    
    # 7. 清空所有缓存, 慎用
    # $memcached->flush();
    
    # 8. 值加法
    $memcached->set('number', 2); # 设置初始值为 2
    $memcached->increment('number', 5); # 每次请求都增加5
    var_dump($memcached->get('number'));

    # 9. 值减法
    $memcached->set('number', 2); # 设置初始值为 2
    $memcached->decrement('number', 5); # 每次请求都减少5
    var_dump($memcached->get('number'));
    
    # 10. 批量增加缓存
    $memcached->setMulti(['key1'=>'value1', 'key2'=>'value2']);
    var_dump($memcached->get('key1'));
    
    # 11. 批量获取缓存
    $cache_array = $memcached->getMulti(['key1', 'key2']);
    var_dump($cache_array);
    
    # 12. 批量删除缓存
    $memcached->deleteMulti(['key1', 'key2']);
    
    # 13. 获取执行情况
    var_dump($memcached->getResultCode()); # 0 成功
    var_dump($memcached->getResultMessage()); # SUCCESS 成功

    # 14. 其它
    # 获取 Memcached 版本信息
    var_dump($memcached->getVersion());
    
    # 获取服务器统计信息
    var_dump($memcached->getStats());

五、Memcache 图形化管理工具

图形化监控工具 - Memcache 官网

管理与监控工具 - MemAdmin 官网

5.1 图形化监控工具 - Memcache

第一步: 下载与解压

# 1. 直接下载 8.0 稳定版本
wget http://pecl.php.net/get/memcache-8.0.tgz

# 2. 解压
tar -zxvf memcache-8.0.tgz

第二步: 将 memcache-8.0 目录放到 PHP环境的站点目录中, 配置为 PHP 可访问的站点

第三步: 修改 memcache-8.0 目录中 memcache.php 文件, 根据自己的需要进行修改

define('ADMIN_USERNAME','用户名'); 	// Admin Username
define('ADMIN_PASSWORD','密码');  	// Admin Password

# 注释掉默认的
# $MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
# $MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

# 改为自己的配置, IP 与端口
$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array

第四步: 浏览器地址栏输入 刚配置的站点域名/memcache.php , 输入配置的 用户名密码即可登录。

5.2 管理与监控工具 - MemAdmin

注意: 必须安装 memcache 扩展。

第一步: 下载与解压

# 1. 下载包
wget http://www.junopen.com/memadmin/memadmin-1.0.12.tar.gz

# 2. 解压
tar -zxvf memadmin-1.0.12.tar.gz

第二步: 将 memadmin 目录放到 PHP环境的站点目录中, 配置为 PHP 可访问的站点

第三步: 修改 memadmin 目录中 config.php 文件, 根据自己的需要进行修改

$config['user'] = "用户名"; // your username
$config['passwd'] = "密码"; // your password

第四步: 浏览器地址栏输入 刚配置的 memadmin 站点域名/index.php , 输入配置的 用户名密码即可登录。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端木木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值