Когда я должен использовать Кэш-память вместо Memcached?

У меня обычно есть следующее в файле расположения:


  <%= javascript_include_tag :defaults %> 
  <%= @extra_head_content %>

И затем в представлениях:

<% (@extra_head_content ||= "") += capture do %>
  <%= other_content %>
<% end %>

См. документацию API для #capture

316
задан Shog9 19 December 2013 в 13:19
поделиться

2 ответа

Клиентская библиотека Memcached совсем недавно была выпущена как стабильная. Он используется digg (был разработан для digg Андреем Змиевским, больше не работает с digg) и реализует гораздо больше протокола memcached , чем старый клиент memcache. Наиболее важные особенности memcached:

  1. Токены Cas . Это сделало мою жизнь намного проще и является простой системой предотвращения устаревших данных. Всякий раз, когда вы извлекаете что-либо из кеша, вы можете получить с ним токен cas (двойное число). Затем вы можете использовать этот токен для сохранения обновленного объекта. Если никто другой не обновил значение во время работы вашего потока, обмен будет успешным. В противном случае будет создан более новый токен cas, и вам придется перезагрузить данные и снова сохранить их с новым токеном.
  2. Прочитать обратные вызовы - лучшее, что есть после нарезанного хлеба. Это упростило большую часть моего кода.
  3. getDelayed () - полезная функция, которая может сократить время, в течение которого ваш скрипт должен ждать, пока результаты вернутся с сервера.
  4. Хотя предполагается, что сервер memcached чтобы быть очень стабильным, он не самый быстрый. Вы можете использовать двоичный протокол вместо ASCII с новым клиентом.
  5. Когда вы сохраняете сложные данные в memcached, клиент всегда выполнял сериализацию значения (что происходит медленно), но теперь с клиентом memcached у вас есть возможность использовать igbinary . Пока у меня не было возможности проверить, насколько это может быть прирост производительности.

Всего этого было достаточно для меня, чтобы переключиться на новейший клиент, и могу сказать вам, что это работает как шарм. Существует эта внешняя зависимость от библиотеки libmemcached , но тем не менее мне удалось установить ее в Ubuntu и Mac OSX, так что пока никаких проблем.

Если вы решите обновить библиотеку до более новой, я Предлагаю вам обновить сервер до последней версии, так как он также имеет некоторые приятные функции. Вам нужно будет установить libevent для его компиляции, но в Ubuntu это не было большой проблемой.

Я пока не видел, чтобы какие-либо фреймворки поддерживали новый клиент memcached (хотя я не (не отслеживать их), но я предполагаю, что Zend скоро появится на борту.

ОБНОВЛЕНИЕ

Zend Framework 2 имеет адаптер для Memcached, который можно найти здесь

246
ответ дан 23 November 2019 в 01:04
поделиться

Memcached - это более новый API, он также предоставляет memcached в качестве провайдера сеанса, что может быть замечательно, если у вас есть ферма серверов.

После того, как версия все еще очень низкая, 0.2, но я использовал оба, и у меня не было серьезных проблем, поэтому я бы пошел в memcached, поскольку он новый.

7
ответ дан 23 November 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: