Как memcache хранит данные? - PullRequest
       6

Как memcache хранит данные?

16 голосов
/ 09 декабря 2010

Я новичок в кешировании и понятия не имею, как данные хранятся в кешировании. Я попытался прочитать несколько примеров в Интернете, но все предоставляют фрагменты кода для хранения и получения данных, а не объясняют, как данные кэшируются с использованием memcache. Я прочитал, что он хранит данные в парах ключ-значение, но я не могу понять, где хранятся эти пары ключ-значение?

Также может кто-нибудь объяснить, почему данные, помещаемые в кеш, хешируются или шифруются? Я немного запутался между сериализацией данных и хэшированием данных.

Ответы [ 3 ]

19 голосов
/ 09 декабря 2010

Несколько цитат со страницы Memcache в Википедии :

API Memcached предоставляют гигантскую хэш-таблицу, распределенную по нескольким машинам.Когда таблица заполнена, последующие вставки приводят к удалению старых данных в порядке наименьшего количества использованных (LRU).

И

Серверы сохраняют значения в ОЗУ;если серверу не хватает оперативной памяти, он отбрасывает самые старые значения.Поэтому клиенты должны рассматривать Memcached как временный кеш;они не могут предположить, что данные, хранящиеся в Memcached, все еще там, когда они в них нуждаются.

Остальная часть страницы в Википедии довольно информативна и может помочь вам начать работу.

2 голосов
/ 09 декабря 2010

Я не очень хорошо знаком с memcached, поэтому возьмите то, что я должен сказать, с крошкой соли: -)

Memcached - это отдельный процесс или наборпроцессы, которые хранят значения ключа в памяти, чтобы к ним можно было легко получить доступ позже .В некотором смысле, они предоставляют другую глобальную область, которая может совместно использоваться различными аспектами вашей программы, позволяя вычислить значение один раз и использовать во многих отдельных и отдельных областях вашегопрограмма.В другом смысле они предоставляют быструю , забывчивую базу данных, которую можно использовать для хранения временных данных. Данные не хранятся постоянно , но, как правило, они будут храниться после истечения срока действия конкретного запроса (возможно, Memcached никогда не сохранит ваши данные, поэтому каждое чтение будет пропущено, но это обычнопризнак того, что он не настроен правильно для вашего варианта использования).

Данные, поступающие в кэш, не должны хешироваться или шифроваться (но обе вещи могут произойти сданные, в зависимости от механизма кэширования.)

Сериализация данные на самом деле не имеют ничего общего ни с одной из концепций - вместо этого, это процесс изменения данных из одного формата (обычно один подходит дляхранение в памяти) к другому (как правило, подходит для хранения на постоянном носителе.) Другим термином этого процесса является маршалинг и демаршаллинг.

2 голосов
/ 09 декабря 2010

Они хранятся в памяти на сервере, поэтому, если вы часто используете один и тот же ключ / значение и знаете, что они не изменятся некоторое время, вы можете сохранить их в памяти для более быстрого доступа.

...