zoukankan      html  css  js  c++  java
  • php链接memcache操作



    设置值

    set key 压缩标识 有效期 长度
    set name 0 60 5
    hello

    压缩标识:用于告诉memcached服务器是否压所后存储数据,目的是为了节省磁盘空间,压所和解压缩会消耗时间
    有效期:用于key在什么时间失效,设置方式有两种,时间间隔和时间戳,区分时间间隔和时间戳的方法:
    临界值:308243600=2592000(30天)
    长度:值的大小(字节为单位)
    键:由字母数字下划线标识符组成,长度不要大于250字节,在实际开发中,建议使用前缀
    值:需要缓存的数据内容,字符串,在实际开发中,配合序列化和反序列化使用,单个值不能超过1M

    add age 0 0 2 仅添加,如果key已经存在,则添加失败
    replace 仅替换,如果key不不存在的,则替换失败
    delete key 删除指定的key缓存
    fash all 清空所有缓存

    stats 获取当前memcached服务器的状态

    hits:命中率:

    misses:未命中率:
    关注它的原因就是要查看缓存内容是否有效,有否被获取到。如果命中率太低了,就证明缓存的数据有问题。需要把缓存数据整理好。重新存放。缓存命中率有70%就可以了。
    提升命中率,应该讲常用的获取频繁的数据放在存储缓存中,实际开发中,缓存需要预热处理。

    stats items 命令用于显示各个slab中item的数目和存储时长(最后一次访问距离现在的秒数)
    stats cachedump slabs_id limit_num
    slabs_id: 由stats items返回的结果(STAT items后面的数字)决定的
    limit_num:返回的纪录数,0表示返回所有记录

    内存的限制:32位下最大的设置为2Gs
    如果有30G的数据要缓存,一般也不会单实例装30G,一般建议 开启多个实例(可以在不同的机器或者同台机器上的不同端口)

    标量类型

    整型

    <?php
        $mem=memcache_connect('127.0.0.1',11211);
        $int=123;
        $mem->set('int',$int,0,0);
        $value=$mem->get('int');
        halt($value);
        //结果
        string "123"
    

    字符串

    <?php
        $mem=memcache_connect('127.0.0.1',11211);
        $str="123";
        $mem->set('str',$str,0,0);
        $value=$mem->get('str');
        halt($value);
        //结果
        string "123"
    

    布尔

    <?php
        $mem=memcache_connect('127.0.0.1',11211);
        $true=true
        $mem->set('true',$true,0,0);
        $value=$mem->get('true');
        halt($value);
        //结果
        string "1"
        布尔值是真,隐式转化1
        
        //返回假的情况
        string ""
        返回的是空字符串
    

    非标量类型

    数组

    <?php
        $mem=memcache_connect('127.0.0.1',11211);
        $str=[1,2,3,4];
        $mem->set('str',$str,0,0);
        $value=$mem->get('str');
        halt($value);
        // 浏览器返回结果
        array [1,2,3,4]
        //服务器数据
        //get arr
        //value arr 1 46
    序列化与反序列化:
    PHP在存储数据的时候,通过php_memcache.dll扩展实现的序列化。在反序列化的时候,也是我们的扩展帮助我们实现的序列化。
    

    对象

    <?php
    class A{
    private $name='chen';
    
    function getName(){
        return $this->name;
        }
    }
    
    $mem=memcache_connect('127.0.0.1',11211);
    $obj=new A();
    $mem->set('obj',$obj,0,0),;
    $value=$mem->get('obj');
    halt($value);
    echo $value->getName();
    ?>
    

    //结果:
    obj...
    对象在存储的时候,也是会被序列化的。同样也是和数组是一样的。是在扩展端实现的序列化与反序列化。

    NULL

    返回结果是null

    资源类型
    同样也是在序列化之后存储到服务器的。取出来之后也实现了反序列化。但是这样值不再可用了。因为资源类型被序列化的时候,不能被完整描述。

  • 相关阅读:
    Javascript文件加载:LABjs和RequireJS
    【译】前端开发者的基本要求
    正则基础之——NFA引擎匹配原理
    JavaScript 设计模式 安全沙箱模式
    jsdoc_toolkit
    JS判断手机浏览器
    JavaScript:Object.prototype.toString方法的原理
    FullCalendar 官方文档翻译2
    浏览器缓存机制
    jQuery.extend 函数详解
  • 原文地址:https://www.cnblogs.com/qinsilandiao/p/10871925.html
Copyright © 2011-2022 走看看