Memcache
来源:互联网 发布:java保留小数点后一位 编辑:程序博客网 时间:2024/05/16 05:47
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.gzcd memcached-1.4.33./configure --prefix=/usr/local/memcached/ --enable-64bit #支持64位 make #时钟错误 date -s 20190705 +11:50make install cd cd libmemcached-1.0.18./configure --prefix=/usr/local/libmemcached/ --with-memcached-dir=/usr/local/memcached make make installcd php-memcached-php7phpize #安装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 -dtelnet 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 -dtelnet 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 5hello replace name 0 100 6hellosget name获取的是 hellos ----------------------------------------set name 0 100 6asdfghSTOREDget name VALUE name 0 6asdfghENDappend name 0 200 5 在key中 追加 value的值 追加到尾部 helloSTOREDget nameVALUE name 0 11asdfghhelloEND--------------------------------incr keyname 数字 自增多少 decr keyname 自减多少 set numer 0 100 210 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()
阅读全文
0 0
- Memcache
- MemCache
- Memcache
- Memcache
- Memcache
- memcache
- Memcache
- Memcache
- memcache
- memcache
- memcache
- memcache
- Memcache
- MemCache
- memcache
- memcache
- Memcache
- Memcache
- SSH和SSM的对比总结
- 博客新手
- 第一个Physx例子
- WebService自己用例
- partition-list
- Memcache
- 洛谷 P2422 良好的感觉
- struts2学习之---配置struts2的异常处理
- Linux 环境变量
- 原地重复值判断
- dozer-javabean映射工具详解
- AngularJs的forEach循环
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- vector<int>::iterator it