Вложенные поиски memcache в Python, o (n) хорошо / плохо? - PullRequest
0 голосов
/ 23 октября 2010

Что-то вроде этого плохо с memcache?

1. GET LIST OF KEYS
2. FOR EACH KEY IN LIST OF KEYS
   - GET DATA

Я ожидаю, что список ключей будет около ~ 1000 в длину.

Если это плохо, мне интересно, есть ли лучший способ сделать это? Я подумал, что memcache может быть достаточно быстрым, когда такой запрос O (n) не так важен. Я бы никогда не сделал этого в MySQL, например.

Спасибо.

1 Ответ

2 голосов
/ 23 октября 2010

Это будет медленнее, чем нужно, потому что каждый запрос будет ждать завершения предыдущего, прежде чем будет отправлен. Если есть какая-либо задержка на сервере memcache, это быстро накапливается: если задержка составляет всего 100 мкс (типичное время приема-передачи Ethernet), эти 1000 поисков займут одну десятую секунды, что является длительным много приложений.

Правильный способ сделать это - выполнить пакетные запросы: отправлять множество запросов на сервер одновременно, а затем получать все ответы обратно, чтобы вы не брали штраф за задержку повторно.

Модуль python-memcache имеет метод get_multi, который сделает это за вас.

...