ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
[TOC] > [官网手册](http://php.net/manual/zh/memcache.add.php) ## 安装 ### linux ``` yum install memcached -y ``` ### window [winx64](http://static.runoob.com/download/memcached-1.4.5-x86.zip) ## 使用 ### 参数 ``` -d是启动一个守护进程; -m是分配给Memcache使用的内存数量,单位是MB; -u是运行Memcache的用户; -l是监听的服务器IP地址,可以有多个地址; -p是设置Memcache监听的端口,,最好是1024以上的端口; -c是最大运行的并发连接数,默认是1024; -P是设置保存Memcache的pid文件。 ``` ### 启动 ``` memcached -p 11211 -m 64m -vv ``` > 这里显示了调试信息。这样就在前台启动了memcached,监听TCP端口11211,最大内存使用量为64M。调试信息的内容大部分是关于存储的信息。 ### 作为后台服务程序运行 `memcached -p 11211 -m 64m -d` ## 接口 ### set (key存在可替换) 如果 key 存在,则进行更新 ``` set key flags exptime bytes [noreply] value 参数说明如下: key:键值 key-value 结构中的 key,用于查找缓存值。 flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) bytes:在缓存中存储的字节数 noreply(可选): 该参数告知服务器不需要返回数据 value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value) ``` ### add (key存在不可替换) 当 key 存在时,不进行更新,并返回 NOT_STORED ``` add key flags exptime bytes [noreply] value ``` ### replace (key不存在会报错) 如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED,可针对 `add` 替换value ``` replace key flags exptime bytes [noreply] value ``` ### append (向value后追加内容) ``` append key flags exptime bytes [noreply] value ``` eg: ``` set runoob 0 900 9 memcached STORED append runoob 0 900 5 redis get runoob VALUE runoob 0 14 memcachedredis END ``` ### prepend (向value后追加内容) ``` prepend key flags exptime bytes [noreply] value ``` ### get 获取一个或多个value ``` get key get key key1 key2 ``` ### delete ``` delete key [noreply] ``` ### incr / decr 自增/自减 incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。 ``` incr key increment_value 参数说明如下: key:键值 key-value 结构中的 key,用于查找缓存值。 increment_value: 增加的数值。 ``` ## demo ``` $memcache = new Memcache; //创建一个memcache对象 $memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器 $memcache->set('key', 'key'); //设置一个变量到内存中,名称是key 值是test $memcache->set('key1', 'key1'); //设置一个变量到内存中,名称是key 值是test $memcache->get('key1'); //从内存中取出key的值 $memcache->delete('key1'); //刪除 $memcache->get('key1'); //bool值 false $memcache->add('key10', 'value'); $memcache->add('key10', 'value1'); $memcache->get('key10');//value add 不会进行覆盖 $memcache->set('name', array('cpj','age'=>17,'233')); $memcache->get('name'); //可输出数组 ```