2010-10-22 3 views
0

Что-то вроде этого плохо с memcache?Вложенные поиски memcache в Python, o (n) good/bad?

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

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

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

Спасибо.

+0

Кажется, что обычный индексный доступ ко мне, поэтому ничего плохого. Как вы говорите, memcached подготовлен для такого доступа без особого штрафа. –

+1

рассмотрите возможность использования http://code.google.com/p/moxi/, который будет прокси-сервером между вашим приложением и memcached и может помочь ускорить несколько операций get –

ответ

2

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

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

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

+0

Это имеет большой смысл. Спасибо за помощь. – ensnare

+0

Не забудьте принять ответы. –

Смежные вопросы