memcache使用经验
本文为作者原创未经允许请勿转载
Memcache
Memcache默认监听的端口是11211
Nginx/apache 80
ssh 22
ftp 21
mysql 3306
默认情况下,php操作不了内存,php要想操作内存,那么服务器要安装Memcache软件,php还要安装一个操作Memcache软件的扩展(memcache)。
软件相当于mysql而软件的扩展就如同PDO和mysqli只是对软件操作的扩展
缓存的原理:系统先查询系统缓存,没有的话再去查找数据库,查找完数据库若是热门数据将数据存在缓存当中。
具体实现
实例化:$mem = newMemcache;
$mem->addServer(‘localhost’,11211);参数一是要链接的服务器的ip,二是端口
$data= $mem->get(key);
$mem->set(‘key’,$data,MEMCACHE_COMPRESSED,12);
将$data这个数据可是数组放置于$mem中下标为‘key’的位置,然后这个缓存能存在12秒,不只是set才可以,add也可以进行数据放入缓存。$data不仅仅可以是一个字符,字符串,数组,对象的等。MEMCACHE_COMPRESSED是否使用zlib压缩,只有当数据到达一定大小时才会进行压缩。
Set|replace下标键存在就是覆盖,不存在就是添加
Add是添加
删除缓存$mem->delete(‘key’);
在对一个数据进行缓存的时候要考虑到当数据库这个数据被修改时应该及时修改相应的缓存内容或者删除掉缓存的内容。
Memcache
分布式的用法非常简单;只要:
$mem= new Memcache;
$mem->addServer(‘192.168.32.225’,11211);
$mem->addServer(‘192.168.111.128’,11211);
$mem->set(‘key1’,’haha’);//在这里他会随机将这个下标给到其中一台memcache服务器,而且不需要担心某一台有了key1下标存在了,他有自动检测两个是否存在的功能
$mem->get(‘key1’);//会自动去检测key1是否存在于某一台memcache服务器当中。如果不巧的是在做分布之前已经有了一样的值,那么会取到后面一台服务器的key值;
在类以及项目中的使用:
用一个key来装所有的相关字段例如tabname这个为这个key的名字,存了各种id,然后各个id,id2,id3….为各个不一样的key名,然后再往里面插数据,例如id对应的[‘name’=>’haha’,’sex’=>’nv’];这样的数组这样子就相当于在tabname这个表insert一条数据,tabname这个key里面的值就是装着唯一索引的字段值(一般是id或者是name唯一,id还能自增),然后这个对应值有着其他字段的各种值。