我工作的一个游戏需要一个message queue(即消息、信息出,没有重复的或已删除邮件假设没有意想不到的缓驱逐).这里是缓存基础的队列,我知道:

我学会了这一概念的缓存队列 这篇文章:

所有消息都保存一个整数作为关键。有一个关键具有下一个关键和一个具有关键的最早的消息在队列中。访问这些的增加/减少的方法是使用作为它的原子,因此有两个键作锁。他们得到增加,并且如果返回值为1的进程已经锁,否则它不断递增。一旦这个过程是完成了它的价值回到0。简单但有效的。一个需要注意的是,整数将溢出的,所以有一些逻辑,将使用钥匙1一旦我们接近这一限制。作为增加操作的原子,锁只是需要如果两个或更多的memcaches用(冗余),以保持同步。

我的问题是,是否有一个缓存的基于信息队列服务可以运行的应用程序的发动机?

有帮助吗?

解决方案

我会很小心使用的谷歌应用程序的引擎缓存在这种方式。你是对的担心"意想不到的缓驱逐".

谷歌希望你使用缓存为 缓存 数据并不 储存 它。他们不能保证数据保留在缓存。从 再文件:

默认情况下,项目从来没有过期,虽然 项目可能被驱逐,由于记忆 压力。

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

  1. 会有的延迟用谷歌给亚马逊的服务器。
  2. 你会为此付出两倍的所有数据的交通支付它离开谷歌然后再次支付用于它去亚马逊。

其他提示

我已经开始了一个简单的Python缓存队,这可能是有用的:http://bitbucket.org/epoz/python-memcache-queue/

如果你很高兴有可能失去数据,通过各种手段继续前进。铭记的是,虽然缓存通常具有较低的延迟于数据存储库,像其他任何东西,它将遭受如果你有一个高速率的原子操作要执行在一个单元。这不是一个数据存储库的问题-这是一个简单的问题具有序列化的访问。

如果做不到这一点,亚马逊的P似乎是一个可行的选择。

为什么不使用任务的队列:
https://developers.google.com/appengine/docs/python/taskqueue/
https://developers.google.com/appengine/docs/java/taskqueue/

它似乎来解决问题,而不可能丢失的信息,在缓存基础的队列。

直到谷歌施一个适当的工作队,为什么不能使用的数据商店吗?正如其他人所说的那样,缓存仅仅是一个缓和可能失去排队项目(这将是..不好)

数据储存应该不够快,你需要什么-你只会有一个简单的工作模型,它将更加灵活于缓存为你不局限于关键值对

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top