4. PHP 操作 memcache(1)
2016-03-10 22:10
246 查看
如何使用php程序操作我们的memcached服务 curd.
步骤,准备工作.
(1) 把 php_memcache.dll 文件拷贝 php的ext 下
☞ 不同版本的php 所使用的 php_memcache.dll 的版本不一样
(2) 修改php.ini文件,加载 php_memcache.dll (该文件就是封装了一堆函数)
;加载php_memcache.dll 文件
extension=php_memcache.dll
(3) 重新启动apache
(4) 我们写程序来完成curd操作.
可以用 telnet 查看是否成功
取对象时,要注意:在前面声明要取的类。跟session一样
序列化保存数据的结构和信息; 而 json 保存键值对.
细节: 在我们添加数据的时候,如果 bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] ) 如果报 expire 设为0 表示,永不过期.(只要memcache不重新启动,就永远在mem中) exprie 直接给的是秒数,则最大 30*3600*24 如果你希望保持时间超过30 time()+天数*3600*24 即可
mem1.php
<?php //创建一个 memcache 对象实例 $mem = new Memcache(); if ($mem->connect('127.0.0.1',11211)){ echo '连接成功<br/>'; }else{ echo '连接失败<br/>'; } //增加 //1.增加一个字串 /*if ($mem->add('key1','shanghai',MEMCACHE_COMPRESSED,30)){ echo '添加成功<br/>'; }else{ echo '添加失败<br/>'; }*/ //2.添加数字 /*if ($mem->add('key1',100,MEMCACHE_COMPRESSED,30)){ echo '添加成功<br/>'; }else{ echo '添加失败<br/>'; }*/ //3.添加数组 // 在添加数组时,根据需要,希望序列化后在存入。 serialize //根据需要,也可以 json_encode() /*$arr = array('aaa','bbb','ccc'); if ($mem->add('key1',$arr,MEMCACHE_COMPRESSED,30)){ echo '添加成功<br/>'; }else{ echo '添加失败<br/>'; }*/ //4.添加对象 /*class Dog { public $name; public $age; public function __construct($name,$age) { $this->name = $name; $this->age = $age; } } $do1 = new Dog('小米',18); if ($mem->add('key1',$do1,MEMCACHE_COMPRESSED,30)){ echo '添加对象成功<br/>'; }else{ echo '添加对象失败<br/>'; }*/ //5.添加 null 和 布尔值 /*if ($mem->add('key1',null,MEMCACHE_COMPRESSED,30)){ echo '添加null成功<br/>'; }else{ echo '添加null失败<br/>'; }*/ /*if ($mem->add('key1',false,MEMCACHE_COMPRESSED,30)){ echo '添加布尔值成功<br/>'; }else{ echo '添加布尔值失败<br/>'; }*/ //6.资源类型 /*$key1 = mysql_connect('localhost','root','123456'); if(!$key1){ die('连接数据库失败'); } if ($mem->add('key1',false,MEMCACHE_COMPRESSED,30)){ echo '添加资源成功<br/>'; }else{ echo '添加资源值失败<br/>'; }*/ //查询 /*$val = $mem->get('key1'); //如果是资源的话,即使保存成功,取出来也是 0,所以 memcache 不支持存放资源 var_dump($val); echo '$val=',$val,'<br/>';*/ //修改 /*if ($mem->replace('key1','hello',MEMCACHE_COMPRESSED,60)){ echo 'replace Ok <br/>'; }else{ echo 'replace no Ok <br/>'; }*/ //删除 /*if ($mem->delete('key1')){ echo 'key1 删除<br/>'; }else{ echo 'key1 不存在'; }*/ if ($mem->add('key4',100,MEMCACHE_COMPRESSED,time() + 31*3600*24)){ echo '添加成功<br/>'; }else{ echo '添加失败<br/>'; } if ($mem->get('key4')){ echo '取到数据' . $mem->get('key3') . '<br/>'; }else{ echo '没取到数据'; }
mem2.php
<?php //在这个文件去 memcache 对象 $mem = new Memcache(); class Dog { public $name; public $age; public function __construct($name,$age) { $this->name = $name; $this->age = $age; } } if ($mem->connect('127.0.0.1',11211)){ echo '连接成功<br/>'; }else{ echo '连接失败<br/>'; } //在另外文件取对象 $dog = $mem->get('key1'); var_dump($dog);
index.php
<?php class Dog { public $name; public $age; public function __construct($name,$age) { $this->name = $name; $this->age = $age; } } $dog2 = new Dog('小哈',18); //把这个对象保存到磁盘 -> serialize ,字符串可以在网上传输 //传统方法 //file_put_contents('./dog.log',$dog2); //保存不了,是空的 //序列化 file_put_contents('./dog.log',serialize($dog2)); //可以保存,取出时,还可以反序列化 echo '保存ok<br/>'; $str = file_get_contents('./dog.log'); var_dump($str); var_dump(unserialize($str));
相关文章推荐
- 【转】linux下memcached安装以及启动
- JAVA客户端调用memcached
- 关于redis、memcache、mongoDB 的对比
- memcached安装配置
- Memcached分布式实现
- Nginx + Memcached + Tomcat 集群
- [摘选]memcached全面剖析—— 客户端选择(一致性哈希算法)
- memcached java客户端比较
- Discuz 如何开启 memcache
- Discuz 如何开启 memcache
- Memcached与Magent配置测试
- Memcached故障转移测试之Magent安装
- PHP Memcache
- Memcached多台服务器多节点负载均衡测试
- Memcached单台服务器多节点负载均衡测试
- Memcached常用参数
- Memcached安装使用
- 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类
- (原)使用 memcache 使用过程中可能遇到的问题
- memcache和redis区别