Memcache

来源:互联网 发布:java保留小数点后一位 编辑:程序博客网 时间:2024/05/16 05:47

Memcache

Memcache是什么

高性能分布式的key->value内存对象缓存系统 动态web应用 缓解数据库的压力 在内存中缓存数据和对象读数据库的次数

在内存中 它维护一个巨大的hash表 可以存各种格式的数据 图像 视频 文件 数据库检索结果 从内存中读取速度很快

Memcache 和 Memcached区别

memcache 是项目的名称 Memcached 服务端主程序的文件名

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 5key中 追加  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()

原创粉丝点击