Вложенные поиски memcache в Python, o(n) хорошо / плохо?

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

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

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

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

Благодарю.

1 ответ

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

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

Модуль python-memcache имеет get_multi способ сделать это для вас.

Другие вопросы по тегам