Memcache
Memcache是什么
高性能分布式的key->value内存对象缓存系统 动态web应用 缓解数据库的压力 在内存中缓存数据和对象读数据库的次数
在内存中 它维护一个巨大的hash表 可以存各种格式的数据 图像 视频 文件 数据库检索结果 从内存中读取速度很快
Memcache 和 Memcached区别
memcache 是项目的名称 Memcached 服务端主程序的文件名
memcache 使用场景
- 频繁访问的数据 比如头条新闻
- 大量的hot 数据
- 页面缓存
- 频繁的查询条件 和结果
- 临时的数据
安装 memcache
yum -y install libevent libevent-devel
准备 安装包
libmemcached-1.0.18.tar.gz memcached-1.4.33.tar.gz php-memcached-php7.zip
tar -zxvf memcached-1.4.33.tar.gz
cd memcached-1.4.33
./configure --prefix=/usr/local/memcached/ --enable-64bit #支持64位
make #时钟错误 date -s 20190705 +11:50
make install
cd
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached/ --with-memcached-dir=/usr/local/memcached
make
make install
cd php-memcached-php7
phpize #安装PHP扩展靠这个来解压 /usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached/ --disable-memcached-sasl
make
make install
cd /usr/local/memcached/bin
./memcached -u www -d
telnet 127.0.0.1 11211
也可以把它加入到开机启动
cd /etc/rc.d
vim rc.local
./usr/local/memcached/bin/memcached -u www -d
然后重启虚拟机
vim /etc/php.ini
extension_dir =/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
extension memecache.so;
重启 php-fpm
开启memcache ./memcached -u www -d
telnet 127.0.0.1 11211
memcached 特点
单个key 最大的长度 是 memcached.h 设置 KEY_MAX_LENGTH
早前版本通常单个key 是 1M 新版本 2M
数据保存在 内存中 断电数据消失
memcache set 命令 将 value的值 存放到指定的key中
set name 0 10 8
set key flags exptime bytes 如果存在 更新原有的
key name 键的名字
falgs 0 键值额外的东西
exptime 10 过期时间 秒为单位
bytes 8 长度
STORED 保存成功后输出
NOT_STORED 保存失败 退出
ERROR 出错 比如语法错误
----------------------------------------------
get key 获取在key 中的value值 如果key不存在 返回 null
可以 get key1 key2 key3
----------------------------------------------
add key flags exptime bytes 将value的值添加到制定的 key 中 如果存在 则不更新
key name 键的名字
falgs 0 键值额外的东西
exptime 过期时间 秒为单位
bytes 长度
----------------------------------------------
delete name 删除已经存在的key
-----------------------------
replace key flags exptime bytes # 替换的是 key中的value值 而不是 key
set name 0 100 5
hello
replace name 0 100 6
hellos
get name
获取的是 hellos
----------------------------------------
set name 0 100 6
asdfgh
STORED
get name
VALUE name 0 6
asdfgh
END
append name 0 200 5 在key中 追加 value的值 追加到尾部
hello
STORED
get name
VALUE name 0 11
asdfghhello
END
--------------------------------
incr keyname 数字 自增多少 decr keyname 自减多少
set numer 0 100 2
10
get number
10
incr number 5
get number 15
decr number 5
get number
10
session共享 主要解决负责均衡 session 不一样 存放到 memcached 中
vim /etc/php.ini
session.save_handler = memcached;
session.save_path = “127.0.0.1:11211,10.0.164.161:11211”;存放地址
$mem = new Memcached();
$mem->addServer('127.0.0.1','11211');
$mem->set('test',['l'=>'longlong','le'=>'乐天']);
$mem->get('test')
memcached在php程序中的实现
<?php
$list = memcached_get('list');
if (!$list) {
echo 'this is from mysql';
$list = article_list();
memcached_set('list',$list,time()+3600);
} else {
echo 'this is from memcached';
}
echo '<ul>';
foreach ($list as $v) {
echo '<li><a href="#">' . $v['title'] . '</a></li>';
}
echo '</ul>';
function article_list()
{
$link = mysqli_connect('127.0.0.1','root','123456');
mysqli_select_db($link,'chen');
mysqli_set_charset($link,'utf8');
$res = mysqli_query($link,'select * from article');
$arr = [];
while ($row = mysqli_fetch_assoc($res)) {
$arr[] = $row;
}
return $arr;
}
function memcached_set($key,$value,$expire = null)
{
$mem = new Memcached();
$mem->addServer('127.0.0.1','11211');
if ($expire == null) {
return $mem->set($key,$value);
} else {
return $mem->set($key,$value,$expire);
}
}
function memcached_get($key)
{
$mem = new Memcached();
$mem->addServer('127.0.0.1','11211');
return $mem->get($key);
}
?>
Memcached::addSevers()
本文介绍了Memcached作为高性能分布式缓存系统的原理及应用场景,并详细解释了如何在Linux环境下安装配置Memcached及其PHP扩展,同时提供了基本命令用法示例。
1299

被折叠的 条评论
为什么被折叠?



