Memcached
最后更新于:2022-04-02 04:01:02
[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'); //可输出数组
```
';