当前位置:  开发笔记 > 编程语言 > 正文

基于Memcache的消息队列?

如何解决《基于Memcache的消息队列?》经验,为你挑选了1个好方法。

我正在开发一个多人游戏,它需要一个消息队列(即消息输入,消息输出,没有重复或删除消息,假设没有意外的高速缓存驱逐).以下是我所知道的基于memcache的队列:

MemcacheQ:http://memcachedb.org/memcacheq/

Starling:http://rubyforge.org/projects/starling/

Depcached:http://www.marcworrell.com/article-2287-en.html

麻雀:http://code.google.com/p/sparrow/

我从这篇博文中了解了memcache队列的概念:

所有消息都以整数作为键保存.有一个密钥具有下一个密钥,另一个密钥具有队列中最旧的消息的密钥.要访问这些,增量/减量方法用作其原子,因此有两个键充当锁.它们会递增,如果返回值为1,则进程具有锁定,否则它将继续递增.一旦完成该过程,它将值设置回0.简单但有效.需要注意的是整数将溢出,因此有一些逻辑可以在我们接近该限制时将使用的密钥设置为1.由于增量操作是原子的,只有在使用两个或更多个内存缓存(用于冗余)时才需要锁定,以保持这些内存同步.

我的问题是,是否有可以在App Engine上运行的基于memcache的消息队列服务?



1> Dave Webb..:

我会非常小心地以这种方式使用Google App Engine Memcache.你担心"意外的缓存驱逐"是正确的.

Google希望您使用内存缓存来缓存数据而不是存储数据.他们不保证将数据保留在缓存中.来自GAE文档:

默认情况下,项目永不过期,但由于内存压力,项目可能会被逐出.

编辑:总有亚马逊的简单排队服务.但是,这可能不符合价格/性能水平,因为:

    从Google到亚马逊服务器的呼叫会有延迟.

    您最终会为所有数据流量支付两次费用 - 支付费用离开Goog​​le,然后再次付费才能进入亚马逊.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有