Memcache 一般用于缓存服务。但是很多时候,比如一个消息广播系统,需要一个消息队列。直接从数据库取消息,负载往往不行。如果将整个消息队列用一个key缓存到memcache里面,

对于一个很大的消息队列,频繁进行进行大数据库的序列化 和 反序列化,有太耗费。下面是我用PHP 实现的一个消息队列,只需要在尾部插入一个数据,就操作尾部,不用操作整个消息队列进行读取,与操作。但是,这个消息队列不是线程安全的,我只是尽量的避免了冲突的可能性。如果消息不是非常的密集,比如几秒钟才一个,还是可以考虑这样使用的。

如果你要实现线程安全的,一个建议是通过文件进行锁定,然后进行操作。下面是代码:

) % $this->maxSize) 
        {
            $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;
    }
}

最新文章

  1. Web开发安全之文件上传安全
  2. 树莓派3B初始化后一些必须的设置
  3. seajs实现JavaScript 的 模块开发及按模块加载
  4. Oracle EBS R12 (12.1.3) Installation Linux(64 bit)
  5. 2-2. Initializing Objects with Initializer Lists
  6. 【leetcode】 Permutation Sequence (middle)
  7. linux 用户、用户组不能是全数字
  8. U盘安装Win7操作系统
  9. SQL SERVER 分布式事务(DTC)
  10. iOS 学习 - 1.代理传值
  11. 使用prototype 对象定义类成员
  12. js中的this怎么理解
  13. 用JAX-WS在Tomcat中公布WebService
  14. zoj 3203 Light Bulb,三分之二的基本问题
  15. Activity与Activity之间的传值
  16. 我的第一本docker书-阅读笔记
  17. spring mvc 中自定义404页面在IE中无法显示favicon.ico问题的解决方法。
  18. Linux-day2-上课笔记
  19. Intenet 地址
  20. 解决主机ping不通虚拟机

热门文章

  1. ubuntu中使用apt-get install 安装的软件的一些目录所在地
  2. Office(Excel、Word)二次开发——VSTO
  3. Swift之单例模式
  4. CDHtmlDialog 基本使用
  5. Eclipse 生成WebService客户端代码
  6. JAVA常见算法题(二十八)
  7. 一个简单的WebService服务
  8. cpu个数、核数、线程数、Java多线程关系的理解
  9. [转]Sql server 大数据量分页存储过程效率测试附代码
  10. Dev之ribbon设置