美文网首页
Memcached(初学)

Memcached(初学)

作者: f09037cb27f7 | 来源:发表于2017-08-12 09:51 被阅读32次

    Window 下安装 Memcached

    链接:http://pan.baidu.com/s/1skH6GZb 密码:6eyf

    1、解压下载的安装包到指定目录。
    2、在 memcached1.4.5 版本之后,memcached 不能作为服务来运行,需要使用任务计划中来开启一个普通的进程,在 window 启动时设置 memcached自动执行。
    我们使用管理员身份执行cmd,以下命令将 memcached 添加来任务计划表中:

    schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"

    注意:你需要使用真实的路径替代 c:\memcached\memcached.exe。
    注意:-m 512 意思是设置 memcached 最大的缓存配置为512M。
    注意:我们可以通过使用 "c:\memcached\memcached.exe -h" 命令查看更多的参数配置。

    3、如果需要删除 memcached 的任务计划可以执行以下命令:

    schtasks /delete /tn memcached

    4、安装php memcache_dll扩展
    链接:http://pan.baidu.com/s/1miDnv8s 密码:z273

    php连接测试

    <?php
    $memcache = new Memcache; //创建一个memcache对象
    $memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
    $memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
    $get_value = $memcache->get('key'); //从内存中取出key的值
    echo $get_value;
    

    常用操作

    <?php
    //连接Memcache
    $mem = new Memcache;
    $mem->connect("localhost", 11211);
    //保存数据
    $mem->set('key1', 'This is first value', 0, 60);
    $val = $mem->get('key1');
    echo "Get key1 value: " . $val ."<br>";
    //替换数据
    $mem->replace('key1', 'This is replace value', 0, 60);
    $val = $mem->get('key1');
    echo "Get key1 value: " . $val . "<br>";
    //保存数组数据
    $arr = array('aaa', 'bbb', 'ccc', 'ddd');
    $mem->set('key2', $arr, 0, 60);
    $val2 = $mem->get('key2');
    echo "Get key2 value: ";
    print_r($val2);
    echo "<br>";
    //删除数据
    $mem->delete('key1');
    $val = $mem->get('key1');
    echo "Get key1 value: " . $val . "<br>";
    //清除所有数据
    $mem->flush();
    $val2 = $mem->get('key2');
    echo "Get key2 value: ";
    print_r($val2);
    echo "<br>";
    //关闭连接
    $mem->close();
    

    在一台或者多台机器启用一个或者多个进程,这里是在一台机器启
    用两个进程,使用两个端口:
    ./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
    ./memcached -d -u nobody -m 512 127.0.0.1 -p 11212

    <?php
    //连接Memcache
    $mem = new Memcache;
    $mem->addServer("localhost", 11211);
    $mem->addServer("localhost", 11212);
    //保存数据
    $mem->set('key1', 'This is first value', 0, 60);
    $val = $mem->get('key1');
    echo "Get key1 value: " . $val ."<br>";
    //保存数组数据
    $arr = array('aaa', 'bbb', 'ccc', 'ddd');
    $mem->set('key2', $arr, 0, 60);
    $val2 = $mem->get('key2');
    echo "Get key2 value: ";
    print_r($val2);
    echo "<br>";
    //删除数据
    $mem->delete('key1');
    $val = $mem->get('key1');
    echo "Get key1 value: " . $val . "<br>";
    //关闭连接
    $mem->close();
    

    phpMemcachedAdmin 在线管理工具,类似phpmyadmin


    Memcached一些特性和限制
    • 在 Memcached 中可以保存的item数据量是没有限制的,只有内存足够
    • Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程
    • 最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA
    606024*30 控制
    • 最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制
    • 单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进行控制,
    它是默认的slab大小
    • 最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过
    settings.maxconns=1024 进行控制
    • 跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式

    查看Memcached内部工作状态
    访问Memcached:telnet 主机名 端口号
    查看总状态:stats
    查看某项状态:stats curr_connections
    禁止LRU
    有些情况下LRU机制反倒会造成麻烦。memcached启动时通过“-M”参数可以禁止LRU,
    如下所示:
    $ memcached -M -m 1024
    启动时必须注意的是,小写的“-m”选项是用来指定最大内存大小的。不指定具体数值则
    使用默认值64MB。
    指定“-M”参数启动后,内存用尽时memcached会返回错误。话说回来,memcached毕
    竟不是存储器,而是缓存,所以推荐使用LRU。

    Memcached使用线程模式工作
    在安装的时候必须打开:./configure --enable-threads
    安装完之后,启动的时候看看帮助信息有没有这条:
    -t <num> number of threads to use, default 4
    如果存在该选项,说明已经支持了线程,就可以在启动的时候使用 -t 选项来启动多线程
    然后启动的时候必须加上你需要支持的线程数量:
    /usr/local/memcache/bin/memcached -t 1024

    待解决问题:IP限制,会的可以留言

    请大家多多指教,谢谢。

    相关文章

      网友评论

          本文标题:Memcached(初学)

          本文链接:https://www.haomeiwen.com/subject/vgmdrxtx.html