memcached очень интересная и быстрая вещь, но попытки реализовать на нём очередь/стек терпели неудачу из-за ситуации гонок.
Я должен получить последний элемент (А) и дописать следующий. Но я не уверен, будет ли элемент А последним на момент записи следующего.
Получалась такая ситуация:

(1-й процесс) $m->get(‘last’);
(2-й процесс) $m->get(‘last’);

(1-й процесс) $m->set(‘last’=>$modified_last);
(2-й процесс) $m->set(‘last’=>$modified_last); #превед!!

Вариант решения проблемы

# добавление в очередь
my $tail=$m->incr(‘tail’);
$m->set(“queue_$tail”=>$data);
# удаление из неё:
my $head=$m->incr(‘head’)-1;
$m->get(“queue_$tail”);

Может быть я перепутал с голову с хвостом, но этот вариан не боится ситуации гонок.

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

© 2012 Андрей Костенко Suffusion theme by Sayontan Sinha