通过内存缓存后端的 FIFO 队列

FIFO queue via memcache backend

使用 memcached 实现 FIFO 队列是否合理?

我找到了 redis

的食谱

据我所知memcached没有列表类型。 memcached的append()方法看起来很基础

使用 memcached 实现 FIFO 是否合理?

使用 memcached 实现 FIFO 队列是否合理? 。实用吗。以下是 python.

的非常基本的实现
from pylibmc import Client


class Queue: 
    """A sample implementation of a First-In-First-Out
       data structure."""
    def __init__(self):
        self.in_ptr = 0
        self.out_ptr = 0
        self.client = Client(['/tmp/memcached.sock'])

    def push(self, obj):
        key = 'fifoq{0}'.format(self.in_ptr)
        self.client.add(key, obj)
        self.in_ptr += 1


    def pop(self):
        if self.in_ptr > self.out_ptr:
            key = 'fifoq{0}'.format(self.out_ptr)
            ret = self.client.get(key)
            self.out_ptr += 1

            return ret

        return None

这没有线程安全性,不进行类型检查,也不捕获任何异常。一旦添加了这些功能,它就可以像 FIFO 队列一样很好地工作,但我不相信使用 memcached 是理想的解决方案。正如您自己发现的那样,redis 已经具有此功能,并且它将更加健壮和可扩展。

不,因为您永远无法确定在使用 memcached 时队列中是否有大量数据可用。数据可能随时被逐出。