PHP的Memcached简单实现
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。也可动态缓存一些实时数据。
memcached服务器安全的问题,其本身是没有安全认证的,所以数据安全方面可以考虑只进行内网访问、监听IP、修改默认端口等方法。
笔者使用win10环境简单演示和使用。
安装:
http://downloads.northscale.com/memcached-win64-1.4.4-14.zip
默认端口为:11211
以管理员身份运行cmd:
安装:压缩包解压后保存路径\memcached.exe -d install
卸载:压缩包解压后保存路径\memcached.exe -d uninstall
启动服务:压缩包解压后保存路径\memcached.exe -d start
停止服务:压缩包解压后保存路径\memcached.exe -d stop
查看帮助:压缩包解压后保存路径\memcached.exe -h
命令行基本测试:
连接服务器:telnet localhost 11211
//不可输入中文
查看状态:stats
添加数据:add dong 33 0 10 //dong为键,33为随意标记,0为永久保存,其他为x秒,10为10个字节
替换数据:set
获取数据:get dong //dong 为键
删除数据:delete dong //dong为键
删除所有:flush_all
错误信息:
ERROR:普通错误信息,如指令错误
CLIENT_ERROR : 客户端错误
SERVER_ERROR : 服务器错误
PHP基本操作:
打开扩展:
如果thinkPHP需要使用,则新建对象时需要:
//创建连接对象 $men=new \Memcache;
代码基本操作
1 //创建连接对象 2 $men=new Memcache; 3 //连接服务器 4 $men->connect("localhost","11211"); 5 6 //添加 7 //返回bool 8 // MEMCACHE_COMPRESSED 压缩保存 9 //0为永久,其他值为秒,不能超过30天的秒数,如果要超过30天则需要用当前时间戳(time())+xxx秒 10 $men->add("dxd","dongxiaodong",MEMCACHE_COMPRESSED,0); 11 //添加数组数据 12 $men->add("arr",array("11","222","yyy"),MEMCACHE_COMPRESSED,0); 13 //修改 14 //返回bool 15 $men->set("dd",iconv("utf-8","gbk","东小东"),MEMCACHE_COMPRESSED,0); 16 //取值 17 echo $men->get("dxd"); 18 //多个值一起取 19 print_r($men->get(array("dxd","dd"))); 20 //获取存入的数组 21 print_r($men->get("arr")); 22 //删除某个,0为立即删除,其它为等待xx秒删除 23 $men->delete("arr",3); 24 //清空所有 25 $men->flush(); 26 27 //关闭连接 28 $men->close();
分布式简单实现:
1 //创建连接对象 2 $men=new Memcache; 3 4 //连接服务器 5 //多服务器,数据存取与普通一样 6 $men->addserver("localhost",11211); 7 $men->addserver("192.168.4.30",11211);