У меня есть большая таблица, и я хочу сохранить результаты в Memcache. У меня есть Memcache, настроенный на моем сервере, но, похоже, нет никакой полезной документации (что я могу найти) о том, как эффективно передавать большие объемы данных. Единственный способ, о котором я сейчас думаю, это написать запрос mysql, который захватывает ключ и значение таблицы, а затем сохраняет это в Memcache. Это не особенно масштабируемое решение (особенно когда мой запрос генерирует несколько сотен тысяч строк). Любые советы о том, как это сделать?
EDIT: есть некоторая путаница в том, что я пытаюсь сделать. Допустим, что у меня есть таблица с двумя полями (ключ и значение). Я собираю информацию "на лету" и должен сопоставить ее с ключом и вернуть значение.Я бы хотел, чтобы не было необходимости выполнять ~ 1000 запросов на загрузку страницы. Memcache кажется идеальной альтернативой, потому что он настроен на использование значения ключа. Предположим, что эта таблица имеет 100K строк. чтобы получить эти данные из таблицы db в memcache, нужно запустить запрос, который проходит через каждую строку таблицы и создает отдельную строку memcache.
Вопросы: Это хороший способ использовать memcache? Если да, есть ли лучший способ перенести мой стол?
Russ,
Звучит почти так, как если бы использовалась таблица MySQL с механизмом хранения MEMORY ваш путь.
Таблица на основе ОЗУ дает вам гибкость в использовании SQL, а также предотвращает избиение диска из-за большого количества операций чтения/записи (например, memcached).
Однако таблица на основе ОЗУ очень изменчива. Если что-то хранится в таблице и не очищается от таблицы на диске, и вы теряете власть... ну, вы просто потеряли свои данные. При этом убедитесь, что вы каждый раз заподлицо с реальной таблицей на диске.
Кроме того, еще один плюс от использования таблиц памяти - вы можете хранить все типичные типы данных MySQL, поэтому предел размера 1 МБ отсутствует.
вы можете на самом деле вытащить все строки в массиве и сохранить массив в memcache
memcache_set($memcache_obj, 'var_key', $your_array);
но вам нужно запомнить несколько вещей
Я не знаю, чего вы пытаетесь достичь, но общее использование memcache: