Вложенные поиски 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
способ сделать это для вас.