memcache

memcached 的基本概念
memcached是一个高性能的分布式的内存对象系统,支持把各种php的数据(array,对象);
安装步骤:
1、下载memcached软件

2、将memcached软件拷贝到某个目录,最好放在php开发环境目录下,便于管理。
3、开始运行cmd,切换到目录,memcached -d install 安装 memcached -d uninstall 卸载 安装成功没有任何提示。
4、启动服务
    (1)直接通过界面启动该服务
    (2)在控制台启动:memcached -d start
5、查看memcached服务是否启动成功!默认端口号11211
    (1)查看命令:netstat -an
    (2)或者:netstat -anb
如果是正在监听,表示启动成功。
memcached 常用命令:

memcached的基本命令(安装、卸载、启动、配置相关):
-p 监听的端口
-l 连接的IP地址, 默认是本机  
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

memcached的基本命令(当memcached 启动后 用于对memcached管理的数据和本身运行状态相关的命令):
Command       Description                  Example
get          Reads a value                                          get mykey
set          Set a key unconditionally            set mykey 0 60 5
add          Add a new key                 add newkey 0 60 5
replace        Overwrite existing key               replace key 0 60 5
append        Append data to existing key           append key 0 60 15
prepend        Prepend data to existing key           prepend key 0 60 15
incr          Increments numerical key value by given number    incr mykey 2
                    (存放的应当是数字,才能增加或减少)
decr          Decrements numerical key value by given number    decr mykey 5
                    (存放的应当是数字,才能增加或减少)
delete          Deletes an existing key    delete                     mykey
flush_all        Invalidate specific items immediately            flush_all 全部清空
                    Invalidate all items in n seconds                flush_all 900 还有900秒的全部清空
stats          Prints general statistics                        stats
                    Prints memory statistics                        stats slabs
                    Prints memory statistics                        stats malloc
                    Print higher level allocation statistics        stats items
                                                                        stats detail
                                                                        stats sizes
                    Resets statistics                                  stats reset
version              Prints server version.                              version
verbosity          Increases log level                                  verbosity
quit               Terminate telnet session                          quit

对查看的信息的关键字中英文对照表
命令:stats
pid    memcache            服务器的进程ID
uptime                    服务器已经运行的秒数
time                    服务器当前的unix时间戳
version                    memcache版本
pointer_size            当前操作系统的指针大小(32位系统一般是32bit)
rusage_user                进程的累计用户时间
rusage_system            进程的累计系统时间
curr_items                服务器当前存储的items数量
total_items                从服务器启动以后存储的items总数量
bytes                    当前服务器存储items占用的字节数
curr_connections        当前打开着的连接数
total_connections        从服务器启动以后曾经打开过的连接数
connection_structures    服务器分配的连接构造数
cmd_get    get命令(获取)    总请求次数
cmd_set    set命令(保存)    总请求次数
get_hits                总命中次数
get_misses                总未命中次数
evictions                为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read                总读取字节数(请求字节数)
bytes_written            总发送字节数(结果字节数)
limit_maxbytes            分配给memcache的内存大小(字节)
threads                    当前线程数

特别说明;如果你的网站,需要的memcached的内存大于64m,应当这样启动
memcached –m 256m –d start    LRU
如果你希望换一个端口
memcached -d -m 30 -l 127.0.0.1 -p 9000 -d start(linux下管用)

面试题:请你列出5个常见的端口
80    apache/iis
21    ftp
23    telnet
3304    mysql
1521    oracle
1433    sql server
8080    tomcat

使用方法:
1、tenet->memcached(黑窗口操作,教学使用)
2、php程序(1.memcache扩展、2.memcached扩展、3.使用socket网络访问)->memcached

tenet使用(curd操作)方法:
1、链接到memcached:telnet 127.0.0.1 11211
add        name     0         60             5
添加    名字    标志位    存放时间    数据多大字节

添加:key/value 如果有一个Key已存在,在放入的时候不可以放

get name //获取name值

set name 0 60 5
更新:如果name存在相当于更新,如果name不存在就是添加。

delete key值

其他的看手册

php操作memcached

使用memcache扩展(是一堆C函数)来操作 memcached缓存系统

扩展下载:在你的localhost下建立一个phpinfo.php

内容:

<?php

echo phpinfo();

?>

你会看

根据信息,去下载响应的dll文件。网址:http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/

对应选择你的位数和版本否则扩展无效。
1、把 php_memcache.dll 放到在 php/ext 中
2、php.ini 中配置 extension
;这里启用memcache.dll扩展
extension=php_memcache.dll

重启apache。访问http://localhost/phpinfo.php

你会看到phpinfo中会提示:

则开启成功,没有则失败!
3、编程测试(crud操作)
放入数据:
<?php
    //1.实例化一个memcahe对象
    $mem = new Memcache;
    //2.链接到指定的memcache中
    $mem->connect('127.0.0.1',11211);
    //0表示不压缩,压缩用:MEMCACHE_COMPRESSED
    //60秒数,如果此值设置为0表明此数据永不过期,不能超过 2592000秒(30天)
    if(!$mem->add('name','zhang3',0,60)){
        echo '失败';
    }else{
        echo '成功';
    }
?>
取数据:
<?php    
    //1.实例化一个memcahe对象
    $mem = new Memcache;
    //2.链接到指定的memcache中
    $mem->connect('127.0.0.1',11211);
    //0表示不压缩,压缩用:MEMCACHE_COMPRESSED
    //60秒数,如果此值设置为0表明此数据永不过期,不能超过 2592000秒(30天)
    if($res = $mem->get('name')){
        echo '拿到'.$res;
    }else{
        echo '没拿到';
    }
?>
memcache可以放什么类型的数据
PHP数据类型有八种: string, int, float, boolean, array, object, null, rsource(不可放进去)

补充: 关于如何使用多个memcached 缓存服务器.
<?php

    $mem=new Memcache();
    //如果我们网站,需要多个memached缓存系统.
    //$mem->connect("localhost",11211); (立即向localhost的11211端口发出连接)
    $mem->addServer("192.168.1.100",11211);//256 ->10m
    $mem->addServer("192.168.1.200",11211);
    $mem->addServer("192.168.1.222",11211);
    //创建多个memcache服务使用.
    $mem->add("name","zs",0,100);
?>
//使用socket来操作我们的memcached缓存系统.

代码:
<?php
    require "memcached-client.php";

    $mc = new memcached(array(
            'servers' => array('127.0.0.1:11211'), //如果有多个memcached服务器使用可以使用,号间隔添加
            'debug'   => false,
            'compress_threshold' => 10240,
            'persistant' => true));
    $mc->add('key', 'hello123');
//    $mc->replace('key', 'some random string');
    $val = $mc->get('key');        
    echo "key=".$val;
?>
面试题: 请说明memcached 机制?
1.    是c/s结构,使用简单文本通讯(memcached的服务器客户端通信并不使用XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据)
2.    基于libevent处理并发(libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris 等操作系统的的事件处理。Memcached 使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力。)
3.    内置内存存储方式
4.    基于客户端的分布式

posted @ 2017-06-28 09:05  丶老中医  阅读(184)  评论(0编辑  收藏  举报
一切已经开始©2018 丶老中医