使用memcached实现FIFO队列是否合理?
我找到了redis
的食谱据我所知,memcached没有列表类型。 memcached的append()
方法看起来很基本。
使用memcached实现FIFO是否合理?
答案 0 :(得分:2)
使用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已经具有此功能,它将更加强大和可扩展。
答案 1 :(得分:1)
否,因为您永远无法确定使用memcached时队列中将有大量数据可用。可以随时驱逐数据。