Memcached все о времени? - PullRequest
       3

Memcached все о времени?

6 голосов
/ 25 декабря 2010

Я считаю, что стандартный способ кеширования чего-либо с помощью mamcached - это вставка объекта в кэш на определенный период времени, например

 memcli:set(key, rows_array, 5 * 60)

Разве нет лучшего способакешировать вещи, где кеш будет проверять внутри базы данных, чтобы увидеть, изменились ли данные, а не полагаться на таймер, который может вызвать проблемы с синхронизацией?

Я собираюсь использовать PHP.

Ответы [ 5 ]

6 голосов
/ 25 декабря 2010

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

1 голос
/ 25 декабря 2010

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

0 голосов
/ 27 декабря 2010

Вы можете рассмотреть возможность использования Redis. Хотя и не является постоянным (полу), он предлагает некоторый механизм хранения данных и обладает высокой производительностью.

http://www.redis.io

0 голосов
/ 25 декабря 2010

Нет ли лучшего способа кеширования вещи, где будет проверять кеш внутри базы данных, чтобы увидеть, если данные изменилось, а не полагаться на таймер, который может вызвать проблемы с синхронизацией?

Этот таймер не для проверки базы данных, а для освобождения памяти (извлечения данных из кэша).

Из Google App Engine (Python) :

Memcache обычно используется с следующий шаблон: приложение получает запрос от пользователя или приложение. Приложение проверяет нужны ли данные для удовлетворения этот запрос находится в memcache. Если данные находится в memcache, приложение использует эти данные. Если данные не в memcache, приложение запрашивает хранилище данных и сохраняет результаты в memcache для будущих запросов. псевдокод ниже представляет типичный запрос memcache:

def get_data():
    data = memcache.get("key")
    if data is not None:
        return data
    else:
        data = self.query_for_data()
        memcache.add("key", data, 60)
        return data

При обновлении ключа (базы данных) вам также потребуется обновить ключ memcache.

0 голосов
/ 25 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...