zoukankan      html  css  js  c++  java
  • memcahe

    网站的瓶颈 主要集中在数据库 ,用缓存(直接操作内存)

    存储计算机的内存,如果一旦服务器断电,数据都将清空

    内存:memcached redis
    基于文档:mongodb

    memcache:基于内存的高性能的分布式的内存管理系统(C语言,PHP的一个扩展)
    键值对的存储

    使用memcache的客户端:PHP

    1.安装memcache的服务器端 cmd
    1.1 进入到memcached.exe的目录
    1.2 memcached.exe -d install 安装
    1.3 memcached.exe -d start 启动

    memcached.exe -d stop:关闭
    memcached.exe -d uninstall:卸载

    netstat:显示协议统计和当前 TCP/IP 网络连接。
    netstat -a 显示所有连接和侦听端口。 memcache默认的端口号为11211

    2.客户端连接memcache(telnet localhost 11211)
    stats:查看memcache运行状态信息
    set 键 标识符 有效期 长度(只能存储字符串)
    set name 1 0(永久) 10(存储的值必须是10个长度)
    zhangsan
    get 键
    delete 键
    flush_all :清空所有数据
    stats cachedump 1 0:打印所有的数据

    3.PHP连接memcache
    1.将php_memcache.dll放在php目录下的ext目录下
    2.在php.ini配置文件中, 确保安装PHP与memcache的扩展 extension = php_memcache.dll
    3.重启apache,确认memcache扩展成功安装

    memcache::addServer('localhost',11211)
    memcache::set(key,value,MEMCACHE_COMPRESSED,有效期)
    memcache::get(key)
    memcache::delete(key)
    memcache::flush():

    高级session
    baidu.com
    tieba.baidu.com
    music.baidu.com
    sex.baidu.com


    // 必须确保能够连接成功
    session.save_handler = memcache
    session.save_path = 'tcp://192.168.129.30:11211'

    <?php 
    
    // 1.实例化Memcache类    memcache
    $mem = new Memcache;
    
    // 2.配置memcache
    $mem->addServer('localhost',11211);
    
    // 3.向内存中添加数据(四种标量,数组,对象,是将这些数据类型转化为字符串进行存储)
    $mem->set('username','zhangsan');
    $mem->set('age',20);
    $mem->set('price',20.99);
    $mem->set('bool',true);
    
    $mem->set('info',['username'=>'lisi','age'=>20,'sex'=>'男']);
    
    class Person
    {
        public $name = 'wangwu';
        public $age = 20;
        public $sex = 1;
    }
    $mem->set('person',new Person);
    
    
    // set(键,值,指定压缩,设置有效期)
    $mem->set('weight','100KG',MEMCACHE_COMPRESSED,10);
    <?php 
    // 1.先实例化memcache
    $mem = new Memcache;
    $mem->addServer('localhost',11211);
    
    // 2.判断内存中存在对应的数据信息
    
    // 将sql语句单独提取并加密取6位出来作为存入数据的键值
    $sql = 'select * from demo_user';
    $key = substr(md5($sql),0,6);
    echo $key;
    $data = $mem->get($key);
    
    if ($data) {
        echo 'memcache服务器中有对应的数据信息';
    } else {
        /*
            一个小时改变一次内容,将此内容缓存一个小时
    
            在一个小时内,从计算机的缓存中读取数据,
            如果过期,从数据库读取,同时向缓存中再存入一份数据,在保存10s中
        */
        try
        {
            $pdo = new PDO('mysql:host=localhost;dbname=lamp129;charset=utf8','root','');
        } catch (PDOException $p) {
            echo $p->getMessage();
        }
    
        $stmt = $pdo->query($sql);
        $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
        // 将查询到的数据向memcache中写入
        $mem->set($key,$data,MEMCACHE_COMPRESSED,100);
    
        echo '这是从数据库读取到的信息';
    }
    <?php 
    
    // 分布式缓存
    $mem = new Memcache;
    
    // 连接多台memcache服务器
    $mem->addServer('localhost',11211);
    $mem->addServer('192.168.129.67',11211);
    $mem->addServer('192.168.129.32',11211);
    
    for ($i=0;$i<100;$i++) {
        $mem->set("user{$i}",'zhangsan');
    }
    
    var_dump($mem->get('user10'));

    当网站越来越大存储用户或者订单等session信息分布在不同的服务器上怎么办?www.tieba.baidu.com   www.music.baidu.com  www.baidu.com

    session跨域共享问题:将上述的服务器都装上memcache可以用将session数据存入memcache而不存入文件了

    找到php.ini   

    session_save_handler=files   默认

    改为session_save_handler=memcache

    session.save_path='c:xampp mp'

    改为 session.save_path='tcp://localhost:11211'

  • 相关阅读:
    081、Weave Scope 多主机监控(2019-04-29 周一)
    080、Weave Scope 容器地图(2019-04-28 周日)
    079、监控利器 sysdig (2019-04-26 周五)
    078、Docker 最常用的监控方案(2019-04-25 周四)
    077、跨主机使用Rex-Ray volume (2019-04-24 周三)
    076、创建Rex-Ray volume (2019-04-23 周二)
    075、配置Virtualbox backend(2019-04-22 周一)
    074、如何安装和配置Rex-Ray?(2019-04-19 周五)
    073、如何实现跨Docker Host 存储? (2019-04-18 周四)
    072、一文搞懂各种Docker网络 (2019-04-17 周三)
  • 原文地址:https://www.cnblogs.com/lichihua/p/9538134.html
Copyright © 2011-2022 走看看