php 链接 memcache,php链接memcache操作

20190515203416784770.png

20190515203417184199.png

20190515203417430302.png

20190515203417612926.png

20190515203417830708.png

设置值

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服务器的状态

20190515203417943017.png

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,一般建议 开启多个实例(可以在不同的机器或者同台机器上的不同端口)

标量类型

整型

$mem=memcache_connect('127.0.0.1',11211);

$int=123;

$mem->set('int',$int,0,0);

$value=$mem->get('int');

halt($value);

//结果

string "123"

字符串

$mem=memcache_connect('127.0.0.1',11211);

$str="123";

$mem->set('str',$str,0,0);

$value=$mem->get('str');

halt($value);

//结果

string "123"

布尔

$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 ""

返回的是空字符串

非标量类型

数组

$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扩展实现的序列化。在反序列化的时候,也是我们的扩展帮助我们实现的序列化。

对象

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

资源类型

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

20190515203418097320.png

原文:https://www.cnblogs.com/qinsilandiao/p/10871925.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值