Возможно ли реализовать очередь FIFO с memcached? Да. Практически нет. Ниже приведена очень простая реализация с помощью 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 уже есть эта функция, она будет намного более надежной и масштабируемой.
ничего нельзя, но зачем беспокоиться? Redis бьет memcached во многих разных аспектах, и поскольку вы уже обнаружили, что одна из них имеет очередь – e4c5
@ e4c5, если «no» является ответом на «Возможно ли реализовать очередь FIFO с memcached?». Тогда, пожалуйста, напишите ответ. Я соглашусь, проголосую и даю вам щедрость. Кстати, я изменил «возможный» на «правдоподобный». Правильно ли слово «правдоподобно»? – guettli