PHP下用Memcache 实现消息队列
Memcache 一般用于缓存服务。但是很多时候,比如一个消息广播系统,需要一个消息队列。直接从数据库取消息,负载往往不行。如果将整个消息队列用一个key缓存到memcache里面,
对于一个很大的消息队列,频繁进行进行大数据库的序列化 和 反序列化,有太耗费。下面是我用PHP 实现的一个消息队列,只需要在尾部插入一个数据,就操作尾部,不用操作整个消息队列进行读取,与操作。但是,这个消息队列不是线程安全的,我只是尽量的避免了冲突的可能性。如果消息不是非常的密集,比如几秒钟才一个,还是可以考虑这样使用的。
如果你要实现线程安全的,一个建议是通过文件进行锁定,然后进行操作。下面是代码:
{
$keys[] = $this->getKeyByPos($pos);
}
return $keys;
}
private function add($pos, $data)
{
$this->memcache->add($this->getKeyByPos($pos), $data);
return $this;
}
private function increment($pos)
{
return $this->memcache->increment($this->getKeyByPos($pos));
}
private function decrement($pos)
{
$this->memcache->decrement($this->getKeyByPos($pos));
}
private function set($pos, $data)
{
$this->memcache->set($this->getKeyByPos($pos), $data);
return $this;
}
private function get($pos)
{
return $this->memcache->get($this->getKeyByPos($pos));
}
private function delete($pos)
{
return $this->memcache->delete($this->getKeyByPos($pos));
}
private function getKeyByPos($pos)
{
return $this->prefix . $this->name . $pos;
}
}
最新文章
- Web开发安全之文件上传安全
- 树莓派3B初始化后一些必须的设置
- seajs实现JavaScript 的 模块开发及按模块加载
- Oracle EBS R12 (12.1.3) Installation Linux(64 bit)
- 2-2. Initializing Objects with Initializer Lists
- 【leetcode】 Permutation Sequence (middle)
- linux 用户、用户组不能是全数字
- U盘安装Win7操作系统
- SQL SERVER 分布式事务(DTC)
- iOS 学习 - 1.代理传值
- 使用prototype 对象定义类成员
- js中的this怎么理解
- 用JAX-WS在Tomcat中公布WebService
- zoj 3203 Light Bulb,三分之二的基本问题
- Activity与Activity之间的传值
- 我的第一本docker书-阅读笔记
- spring mvc 中自定义404页面在IE中无法显示favicon.ico问题的解决方法。
- Linux-day2-上课笔记
- Intenet 地址
- 解决主机ping不通虚拟机