什么是Memcached
-
Memcached 是一个开源免费的高性能的分布式内存对象缓存系统、
-
就是一个软件
-
以key=>value形式存储数据 [‘name’=>”xiaoming”]
-
所存储的信息在软件关闭后就销毁
Memcached的作用
-
缓存数据提高动态网站的速度
Memcached的安装
//方法一
yum install memcached
//方法二
1.安装libevent (memcached依赖包)
tar -zvxflibevent-release-1.4.15-stable.tar.gz
cd libevent-release-1.4.15-stable
./autogen.sh
./configure -prefix=/usr
make && make install
2.安装memcache
tar-zvxf memcache-1.4.5.tar.gzcd memcache-1.4.5
./configure –prefix=/usr/local/memcachemake && makeinstall
Memcached的启动和连接
-
启动命令 memcached-u root -p 11211 -d
-
连接命令 telnet 127.0.0.1 11211 (如果没有telnet 先执行安装 yum install telnet -y)
Memcached的使用
-
命令行
stats 查看memcached状态(不常用)
set (写入数据)
参数说明:
(键名)
(数字标识,对键名进行标记,无特殊意义写0)
(生命周期,时间单位秒10s,参数0代表永久有效)
(信息长度,单位字节)
get (获取指定数据)
delete (删除指定数据)
flush_all (清空数据)
qurt (退出命令行)
-
php代码
安装php-memcache扩展
1.下载
wget
https://github.com/websupport-sk/pecl-memcache/archive/refs/heads/php7.zip
2.解压
unzip php7.zip
3.进入目录
cd pecl-memcache-php7
4.执行phpize
/usr/local/php/bin/phpize
(宝塔路径/www/server/php/74/bin/phpize)
5.配置
./configure –with-php-config=/usr/local/php/bin/php-config
(宝塔路径/www/server/php/74/bin/php-config)
6.编译安装
make && make install
7.修改php配置文件
vim/usr/local/php/etc/php.ini
(宝塔路径/www/server/php/74/etc/php.ini)
extension_dir=”/usr/local/php/lib/php/extensions/no-debug-zts-20151012/”extension=”memcache.so”
8.重启apache
/www/server/apache/bin/apachectl restart
iptable -F 快速关闭防火墙
-
php-memcache使用
1.创建memcache对象
2.连接memcached服务器
3.写入数据/读取数据/删除数据
4.关闭连接
-
数据缓存的实现
TP6框架连接memcache
-
修改配置文件/config/cache.php
// 更多的缓存连接
'memcached'=>[
// 驱动方式
'type'=>'memcached',
'port'=> "11211",
// 服务器地址"
'host'=> "127.0.0.1",
//m密码
]
-
控制器引入use think\facade\Cache;
Cache::store('memcached')->set('0','456789');
$md= Cache::store('memcached')->get('0');
dump($md);//456789
-
缓存类的封装
<?php
//文件名cache.php
class Cache
{
//创建对象 单例模式
public static function getInstance()
{
if(self::$cache == nul1) {
self::$cache = new Memcache;
$res = self::$cache-> connect('localhost',11211);
//判断是否连接成功
if($res === false){
echo '连接失败!!'; die;
}
}
return self::$cache;
}
//写入缓存
public static function set($key, $value, $lifetime)
{
//实例化对象
return self::getInstance()->set($key,$value,MEMCACHE_COMPRESSED,$lifetime);
//返回值
//返回key对应的存储元素的字符串值或者在失败或key未找到的时候返回FALSE。
}
//读取缓存
public static function get($key)
{
return self::getInstance()->get($key);
}
//检测缓存是否存在
public static function has($key)
{
return self::get($key) === false ? false : true;
}
}
?>
<?php
include ./cache.php';
$key = 'singer_10';
//读取缓存
if(!Cache::has($key)) {
echo 'from mysql<br>'
//获取表数据
include "./1ibs/Model.php";
$singer = new Model('singers');
$data = $singer->first(1);
//写入缓存
Cache::set($key, $data, 3e);
}else{
echo 'from cache<br>!
$data = Cache::get($key);
}
var_dump($data);
-
session数据的memcache存储
<?php
session_start();//启动session
$_SESSION['name']="xiaoming";
echo $_SESSION['name']; //xiaoming
?>
session_set_save_handler 设置用户自定义会话存储函数
<?php
session_set_save_handler('open','close','read','write',destroy', 'gc');
$mem = new Memcache;
$mem->connect('localhost',11211);
// session_start
function open() {
return true;
}
function close() {
}
//echo $_SESSION[ name']
function read($sid) {
}
//$_SESSION['name']='i love you';
function write($sid,$data) {
Cache::set($sid,$data,60);
return true;
}
//session_destory
function destory(){
}
//垃圾回收机制触发时会执行该函数
function gc(){
}
//启动session_start();
//写入session
$_SESSION['name'] = "xiaoming";
?>