Перевести стол в Memcache

0

У меня есть большая таблица, и я хочу сохранить результаты в Memcache. У меня есть Memcache, настроенный на моем сервере, но, похоже, нет никакой полезной документации (что я могу найти) о том, как эффективно передавать большие объемы данных. Единственный способ, о котором я сейчас думаю, это написать запрос mysql, который захватывает ключ и значение таблицы, а затем сохраняет это в Memcache. Это не особенно масштабируемое решение (особенно когда мой запрос генерирует несколько сотен тысяч строк). Любые советы о том, как это сделать?

EDIT: есть некоторая путаница в том, что я пытаюсь сделать. Допустим, что у меня есть таблица с двумя полями (ключ и значение). Я собираю информацию "на лету" и должен сопоставить ее с ключом и вернуть значение.Я бы хотел, чтобы не было необходимости выполнять ~ 1000 запросов на загрузку страницы. Memcache кажется идеальной альтернативой, потому что он настроен на использование значения ключа. Предположим, что эта таблица имеет 100K строк. чтобы получить эти данные из таблицы db в memcache, нужно запустить запрос, который проходит через каждую строку таблицы и создает отдельную строку memcache.

Вопросы: Это хороший способ использовать memcache? Если да, есть ли лучший способ перенести мой стол?

  • 3
    memcache - это хранилище значений ключей. Пожалуйста, помните, что вы не можете запрашивать memcache, только извлекайте существующие данные, если вы знаете, что они хранятся на ключе.
  • 0
    memcache - это кеш , вы не должны импортировать в него данные.
Теги:
memcached

2 ответа

0
Лучший ответ

Russ,

Звучит почти так, как если бы использовалась таблица MySQL с механизмом хранения MEMORY ваш путь.

Таблица на основе ОЗУ дает вам гибкость в использовании SQL, а также предотвращает избиение диска из-за большого количества операций чтения/записи (например, memcached).

Однако таблица на основе ОЗУ очень изменчива. Если что-то хранится в таблице и не очищается от таблицы на диске, и вы теряете власть... ну, вы просто потеряли свои данные. При этом убедитесь, что вы каждый раз заподлицо с реальной таблицей на диске.

Кроме того, еще один плюс от использования таблиц памяти - вы можете хранить все типичные типы данных MySQL, поэтому предел размера 1 МБ отсутствует.

1

вы можете на самом деле вытащить все строки в массиве и сохранить массив в memcache

memcache_set($memcache_obj, 'var_key', $your_array);

но вам нужно запомнить несколько вещей

  • PHP будет сериализовать /unserialize массив из memcache, поэтому, если у вас много строк, он может быть медленнее, а затем запрашивает DB
  • вы не можете выполнять фильтрацию (НЕТ SQL), если вы хотите отфильтровать некоторые элементы, которые вы сами должны использовать для этого фильтра, и, вероятно, он будет работать хуже, чем механизм БД.
  • memcache не будет хранить больше 1 мегабайт...

Я не знаю, чего вы пытаетесь достичь, но общее использование memcache:

  • сохранить результат обработки SQL/времени, но число результирующей строки должно быть небольшим.
  • сохраните некоторые предварительно созданные (X) HTML-фрагменты, чтобы избежать доступа к БД.
  • хранилище пользовательских сеансов
  • 0
    Привет, большое спасибо за ответ. Я отредактировал свой вопрос, чтобы прояснить, что я пытаюсь сделать. Это выглядит как идеальное приложение для memcache, но я могу ошибаться. Кроме того, когда вы говорите, что Memcache не будет хранить более 1 МБ, вы имеете в виду, что я не может иметь значение> 1 МБ. Я предполагаю, что я могу хранить более 1 МБ в Memcache на моем сервере ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню