Блокировки в memcache?

Добрый день,
Есть кеш с пользователями и сообщениями для них, например User_1['{'from':'User_55','data':'Привет'}']
Когда User_55 пишет сообщение для User_1, то записываем в кеш для User_1 , а пользователь User_1 периодически проверяет кеш, и если там что-то новое-то работаем с этим и очищаем кеш.
Но...если много человек начнут слать сообщения к одному человеку, надо как-то блокировать memcache.

для файла делаю подобное с flock
while ((time() - $time) < 30) {
			if ($data = file_get_contents('sockets/'.$sock)) {
				$f = fopen('sockets/'.$sock, 'r+b') or die('socket not found');
				flock($f, LOCK_EX);
				ftruncate($f, 0);
				fwrite($f, '');
				fclose($f);
				$data = trim($data, "\r\n");
				foreach (explode("\r\n", $data) as $action) {
					self::$actions[] = $action;
				}
				self::Send();
			}
			sleep(1);
		}

А как быть с кешем?

можете подсказать конкретный пример?
Спасибо
  • Вопрос задан
  • 2319 просмотров
Пригласить эксперта
Ответы на вопрос 1
bigton
@bigton
Web-программист
1. Использовать вместо PHP расширения Memcache, расширение Memcached. Оно позволяет вместо алгоритма "получить-изменить-сохранить", использовать алгоритм "добавить", что спасает при конкурентном доступе.

2. Перейти с Memcache на Redis, смысл тот же, функциональность шире. В случае Redis вашу задачу можно было бы решить с помощью Списков.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы