PHP5 像使用数组一样使用Memcache
来源:互联网 发布:诺基亚e72i软件下载 编辑:程序博客网 时间:2024/05/09 11:48
原贴:http://www.libing.name/2008/03/13/php5-memcache-array.html
PHP5 像使用数组一样使用Memcache
3月 13th, 2008
作者:张立冰
出处:http://www.libing.name/2008/03/13/php5-memcache-array.html
我们经常使用Memcache来做数据的缓存,比如大的分布式的应用的会话数据的保存等,每次使用Memcache进行数据的操作都必须依赖于Memcache提供的API,对象的创建,方法的调用等,虽然就几个API,使用起来也挺方便的,但再没有像使用数组这么方便来使用你的Memcache了.
At PHPClasses:http://www.phpclasses.org/browse/package/4071.html
在PHP5里,可以方便的帮我们实现了(基于SPL).几小时的工作,可能有些小BUG,欢迎反馈.:)
/**
* mem.class.php -- Class used to access memcache server as array.
*
* Written by roast (roast_AT_php_DOT_net).
*
* Feel free to email me with questions/bugs.
* If you find this useful, would be great to hear from you.
*
* version 1.0 -
*
* Changes:
* - First release.
*
* Example:
*
* include("mem.class.php");
*
* //global variable $_MEM
*
* $_MEM['dd'] = "roast"; //memcache::set
* unset($_MEM['dd']); //memcache::delete
*
* var_dump($_MEM['dd']);
*
* Notes:
* - Protect keys of memcache: _host/_port/_compress/_expire.
* - PHP version 5.0+
*/
class _MEM implements ArrayAccess
{
private $_data = array();
private $_handler = false;
public $_host;
public $_port = 11211;
public $_compress = false;
public $_expire = 30;
public function __construct($host,$port = 11211)
{
$this->_host = $host;
$this->_port = $port;
$this->_handler = new Memcache;
if (!$this->_handler->connect($host,$port))
$this->_handler = false;
}
public function offsetExists($offset) {}
public function offsetUnset($offset)
{
$this->_handler->delete($offset);
unset($this->_data[$offset]);
}
public function offsetGet($offset)
{
if (!$this->_handler)
return false;
echo 'get';
if (isset($this->_data[$offset]))
return $this->_data[$offset];
else
return $this->_handler->get($offset);
}
public function offsetSet($offset, $value)
{
if (!$this->_handler)
return false;
switch ($offset)
{
case '_host': $this->_host = $value; break;
case '_port': $this->_port = $value; break;
case '_expire': $this->_expire = $value;break;
case '_compress': $this->_host = $value; break;
default:
if (emptyempty($value) && $value != '0')
$this->_handler->delete($offset);
else
$this->_handler->set($offset,$value,$this->_compress,$this->_expire);
}
$this->_data[$offest] = $value;
}
}
$_MEM = new _MEM('10.210.71.51');
举个小例子:
include_once('mem.class.php') ;
$_MEM['dd'] = "roast";
unset($_MEM['dd']); //delete a memcache value
var_dump($_MEM['dd']);
echo $_MEM->_host;
$_MEM['_host'] = '192.168.1.1'; //set the memcache server host
echo $_MEM->_host;
$_MEM['roast'] = '张立冰';
$memcache = new Memcache;
$memcache->connect('10.210.71.51', 11211) or die ("Could not connect");
var_dump($memcache->get('roast'));
您可能还喜欢
6 Responses to “PHP5 像使用数组一样使用Memcache”
- PHP5 像使用数组一样使用Memcache
- 像TransactionScope一样使用DbTransaction
- 像黑客一样使用Linux
- 像 IDE 一样使用 vim
- 像使用水电一样使用云计算
- 像使用vim一样使用firefox
- 像使用IDE一样使用vim
- 像类一样使用结构体
- 让肥皂像洗衣液一样使用
- 像 Sublime Text 一样使用 Chrome DevTools
- 像 Sublime Text 一样使用 Chrome DevTools
- FreeBSD:像Linux下一样使用vim
- 像写文章一样使用 Kotlin
- 像使用Linux一样打开Win Bash
- 像Excel一样使用Python(一)
- 像Excel一样使用Python(二)
- 像php一样,在smarty模板中使用in_array检查数组值
- 像数组一样使用NodeList:一个对象组合的有效用法
- 合理使用Memcached进行缓存部署
- VMware Workstation 6.0.2.59824 Net方式无法上网的解决办法
- 将MySQL数据映射到Memcached中
- Opengoo 1.3 RC1版本正式发布了,简体中文语言包也更新过了。
- LUA语言学习教程收藏
- PHP5 像使用数组一样使用Memcache
- 让memcached和mysql更好的工作
- JAVA中的反射机制详解
- MySQL触发器自动更新memcache[原创]
- PHP APC on Ubuntu 8.04 Hardy
- erw
- 金融海啸真厉害。已经感觉到很大的寒意了。
- 这就是曾经的梦想吗?
- 静态方法 与 实例化方法
3月 13th, 2008 at 3:23 下午
太专业了…. 还有那个 svn的地址能不能发给我到 163.com ,我连不上。
3月 14th, 2008 at 10:02 上午
试一下看支不支持html
3月 15th, 2008 at 11:50 上午
什么意思啊?发给你到163.com?
4月 1st, 2008 at 3:39 下午
cool site for my mind its very goodPlease, send your abuse here!!! send.your.abuse.here@gmail.com
5月 8th, 2008 at 10:02 上午
不错,要是php能把memcache内置就好了
5月 8th, 2008 at 12:48 下午
PHP的一些扩展(APC、EA、XCACHE)等可以做差不多的memcache的工作,但是不能做分布式……