Если удалить кэш в телефоне что будет. Что такое кэшированные данные в телефоне? Что такое кэш. Что такое кэшированные данные и кэширование

18.09.2019

Кэширование данных – это размещение информации в специальном месте. Позволяет получить быстрый доступ к сохраненным картинкам, веб-страницам. Одним из легких примеров для понимания является браузер, который сохраняет страницы посещенные пользователем для последующего быстрого доступа к ним.

Пространство, специально отделенное для этой области гораздо меньше, чем у хранилища информации.

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

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

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

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

Со временем буфер съедает большое количество памяти, поскольку данные постепенно накапливаются и чаще всего автоматически не очищаются. Поэтому рекомендуется иногда проводить ручную очистку.

На телефонах с операционной системой Андроид для того, чтобы произвести очистку необходимо зайти в настройки , найти пункт «Приложения », выбрать определенное приложение, чей размер занимает большой объем и запустить очистку.

На Самсунгах, начиная с операционной системы Android lollipop для этой цели предусмотрена специальная вкладка с названием «Кэшированные данные ». Эта функция самостоятельно собирает информацию о заполнении буфера памяти устройства, а пользователь сможет легко отыскать ее в «Настройках » — пройти до пункта «Память » и кликнуть по ней. На экране среди остальных пунктов будет расположена вкладка «Кэшированные данные».

Кроме данной функции на телефонах Samsung имеется еще одна дополнительная опция для работы с буфером памяти – это смарт менеджер . Он позволяет быстро почистить забивающуюся память.

Как используют кеш

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

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

Есть еще несколько сходных по смыслу понятий:


Стоит заметить, что чем больше хранилище, тем больше информации компьютер сможет обрабатывать.

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

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

Можно ли очищать кэшированные данные

Информацию из буфера рекомендуется удалять . Так как она по мере заполнения влияет на скорость работы мобильных устройств. В следствие этого могут возникать частые ошибки и сбои тех или иных программ. Поэтому при появлении проблем в работе устройства в первую очередь очищайте кеш.

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

Что такое кэш? Можно ли очищать кэш приложений на телефоне андроиде? Да можно. Нужно ли очищать кэш на андроид? Нужно и ненужно.

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

Количество приложений, в большинство владельцев постоянно увеличивается. Иногда настолько велико, что приводит к замедлению системы.

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

Зайдите в «Настройки», затем в закладку память, после чего в кэш данных. Вас спросят о том, хотите ли избавиться от всех данных.

Этот шаг можно настроить на периодическое автоматическое повторение, что должно помочь держать систему в хорошем состоянии.

Как работает кэш

Кэш память приложений в телефоне андроид является относительно небольшая по сравнению с объемом памяти смартфона или планшета?

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

Она сокращает разрыва между ростом производительности и скоростью доступа к носителям данных.

Использование кэш памяти имеет два преимущества: сокращение времени доступа и более эффективного использования с помощью встроенного алгоритма интеллектуального хранения данных.

Контроллер памяти определяет последовательность часто повторяющихся операций и в ходе выполнения перехватывает их и заменяет данными из кэша.

Таким образом, процессор сохраняет долгий путь доступа к основной памяти. Цикл в кэше выполняется во много раз быстрее, чем если бы оно было взято из основной памяти.

Что случится если удалить кеш

Ничего не случится, если вы удалите кеш памяти. Она представляет собой набор данных, которые являются «калькой» исходных значений, хранящихся в другом месте.

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


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

Чтобы понять основную концепцию кэширования, посмотрите на простой пример работы библиотекаря.

Когда приходит первый клиент за книгой, библиотекарь идет на склад и возвращается к прилавку с книгой чтобы дать ее клиенту.

Позже, клиент возвращается, чтобы вернуть книгу. Библиотекарь берет книгу относит на склад, возвращается к прилавку и ждет другого клиента.

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


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

В этот рюкзак, он будет ставить книги, которые возвращают клиенты — максимум 10. Теперь, когда придет другой клиент, все что потребуется от библиотекаря, это взять книгу из рюкзака и дать клиенту, поэтому клиент обслуживается быстрее.

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

Поэтому вывод такой: очищать кэш на андроиде можно, но нужно ли его очищать – решать только вам. Успехов.

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

Компьютер, состоящий из самых разных по принципам работы и назначению устройств, можно с достаточно вескими основаниями назвать "гнездом раздора". Ну никак его подсистемы и узлы не хотят согласованно работать на общее благо. Если процессор вырывается вперед, от него отстает память, а о дисковых накопителях и говорить не приходится. И заставить всех бежать со скоростью, задаваемой лидером, чрезвычайно сложно.

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

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

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

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

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

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

По этим причинам сегодня все жесткие диски, включая винчестеры для мобильных, настольных и высокопроизводительных систем, поддерживают кэширование чтения, используя усовершенствованную концепцию. Например, при размещении на накопителе большего числа чипов памяти, что оборачивается возможностью держать в готовности большее количество данных, не дожидаясь их считывания с диска после получения запроса. Другими словами, при установке на печатную плату контроллера накопителя не 64, а 128 килобайт памяти появляется возможность загодя прочитать и приготовить к выдаче вдвое большее количество информации. И, до тех пор пока компьютер будет продолжать запрашивать последовательно записанные на диск данные, они будут моментально выдаваться ему из кэша.

Сегодня, когда большинство производителей использует от 128 до 512 килобайт кэш-памяти, компания Seagate в своих наиболее производительных накопителях Barracuda и Cheetah увеличила ее объем до полновесного мегабайта (предусмотрев возможность ее наращивания в четыре раза), а винчестеры Elite рекордной емкости (23 гигабайта) сразу оснащает 2 мегабайтами кэша. Это необходимо с учетом тех приложений, для которых предназначены указанные жесткие диски - для рабочих станций и серверов класса "хай-энд", мини- и суперкомпьютеров. В каждом из этих случаев постоянно требуется прочтение большого количества данных при максимальной скорости передачи. Настолько быстро, насколько только возможно.

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

Применение стратегий, известных как адаптивное и сегментированное кэширование, помогает минимизировать частоту осечек.

Вот, к примеру, как работает сегментированный кэш. Предположим, что на винчестере установлено 800 килобайт кэш-памяти. Простая стратегия кэширования предполагает, что все эти 800 килобайт будут заполняться считываемыми в порядке упреждения данными.Если никакая часть из этих данных не будет востребована системой при следующем обращении, всех их придется удалить из кэша. Это промах. Замечу, что такое происходит сплошь и рядом при работе современных многозадачных систем, в которых за данными к диску обращаются поочередно несколько прикладных программ, причем каждая из них интересуется информацией, записанной на диске в совершенно другом месте.

Представим теперь, что кэш-память разделена на два сегмента по 400 килобайт каждый. Накопитель расценивает их как два абсолютно независимых кэш-буфера. Теперь данные для одного приложения можно записывать в первый 400-килобайтный сегмент, а для второго - во второй 400-килобайтный сегмент. Данные для обеих программ будут выдаваться из кэш-памяти, соотношение попаданий и промахов улучшится раза в два, если не больше. Именно поэтому в своих винчестерах Seagate применяет кэш-буферы, разделенные на два или четыре сегмента фиксированного размера. Наращивать их число свыше четырех инженеры из Seagate считают неоправданным, кроме исключительных случаев.

Второй путь улучшения рейтинга попаданий называется адаптивным кэшированием. В действительности термин адаптивное кэширование описывает два различных метода повышения эффективности. В соответствии с первым реализуется адаптивная сегментация, которая позволяет контроллеру винчестера управлять числом независимых сегментов, организуемых в кэш-памяти. Второй тип адаптивного кэширования подразумевает использование адаптивного алгоритма.

Предположим снова, что на винчестере установлен 800-килобайтый кэш-буфер с упреждающим чтением и этот буфер разделен на четыре сегмента по 200 килобайт. Предположим также, что запущенное на компьютере приложение запрашивает данные, которых нет ни в одном из четырех сегментов. Накопитель должен смириться с промахом и прочитать их со своих дисковых пластин, а заодно решить, куда их поместить в кэш-памяти. Чтобы принять такое решение, ему предстоит определить, какой из четырех сегментов лучше очистить. Разумеется, нежелательно помещать новые данные в сегмент, информация из которого вскоре может быть затребована, так как это приведет к повторному ее считыванию и перезагрузке кэша. Адаптивный алгоритм принимает решение о том, данные из какого сегмента скорее всего больше не понадобятся, основываясь на собственном анализе предыдущего использования данных.

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

Роман Соболенко,по материалам Seagate

Каждый человек, часто пользующийся различными гаджетами так или иначе встречался с понятиями «Кэш» и «Кэширование данных». Может быть он слышал об этих понятиях, может он даже знает, что они означают, но, даже если он слышит о них впервые, он всё равно уже имел опыт использования кэшированных данных, но не знает этого.

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

Так что же такое кэш?

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

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

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

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

Эти данные и были использованы при второй загрузки. Что и привело к её ускорению. Этот пример кэширования данных очень часто встречается на практике, но обычно его не замечают.

Для чего используется кэширование данных

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

Кэш есть у каждого приложения, он также способствует его ускоренной загрузке.

Проблемы кэширования данных

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

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

Как осуществляется удаление кэша приложения

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

  1. Ручной метод.
  2. Автоматический метод.

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

Самый универсальный метод - это автоматический метод для того, чтобы им воспользоваться нужно скачать специализированное приложение, которых полно в интернете. Приложение само найдёт все источники кэшированных данных и удалит их. Этот метод не обладает существенными минусами, кроме того, что придётся устанавливать новое приложение.

К чему может привести удаление кэша

Удаление кэшированных данных не приведёт ни к каким страшным последствиям, оно лишь освободит место в памяти устройства.

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

Подведение итогов

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

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

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

Удаление кэша приложения может помочь в решении проблемы, связанной с работой этого приложения.

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

Наиболее популярная технология кеширования для Web приложений — Memcache .

Когда нужно кэшировать

Старайтесь избегать кэширования, пока в этом не будет прямой необходимости. Это простая техника, но это снижает гибкость приложения. Не делайте лишнюю работу заранее, но закладывайте возможность использования кэширования в будущем:

  • Используйте классы или функции, для работы с данными. Не используйте повторяющихся SQL выборок в основном приложении.
  • Используйте обертки для работы с внешними API.

Что кэшировать?

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

  • Результаты запросов к внешним сервисам (RSS, SOAP, REST и т.п.).
  • Результаты медленных выборок из базы данных.
  • Сгенерированные html блоки либо целые страницы.

Кэширование выборок из баз данных

Запросы к базе данных — наиболее распространенный пример. На основе Мemcache реализуется очень просто:

!$list = memcache_get("online_users") ) { $sql = "SELECT * FROM users WHERE last_visit > UNIX_TIMESTAMP() - 60*10"; $q = mysql_query($sql); while ($row = mysql_fetch_assoc($q)) $list = $row; memcache_set("online_users", $list, 60*60); } return $list; } $list = get_online_users(); ...

# Запрос на получение пользователей кэшируется на 1 час

Обновление данных

Если Вы кэшируете данные, которые могут обновляться, необходимо очищать кэш после каждого обновления:

memcache_delete("user" . $id); }

Кэширование списков

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

  1. Кэшируют списки, которые состоят только из ID пользователей.
  2. Для вывода списка отправляют отдельный запрос для получения данных каждого пользователя.

Реализация выглядит так:

id FROM users WHERE last_visit > UNIX_TIMESTAMP() - 60*10"; $q = mysql_query($sql); while ($row = mysql_fetch_assoc($q)) $list = $row["id"] ; memcache_set("online_users", $list, 60*60); } return $list; } $list = get_online_users(); foreach ($list as $id) { $user = get_user($id); ... }

# Получим список ID пользователей и для каждого из них получим актуальные данные

Для получения данных сразу нескольких объектов можно использовать Multiget .

Повторные запросы

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

get_user($_SESSION["id"])["name"] )?>

... Email: get_user($_SESSION["id"])["email"] ?> ... get_user($_SESSION["id"])["nick"] ?>">Моя страница ...

Каждый вызов get_user() будет получать данные из кэша. Если Memcache стоит на отдельном сервере, это вызовет большой сетевой трафик и задержки.

Чтобы этого избежать, можно использовать дополнительный кэш внутри самого приложения:

global $app_cache; if ($app_cache["user" . $id]) return $app_cache["user" . $id]; if (!$data = memcache_get("user" . $id)) { $sql = "SELECT * FROM users WHERE id= " . intval($id); $q = mysql_query($sql); $data = mysql_fetch_assoc($q); memcache_set("user" . $id, $data, 60*60); $app_cache["user" . $id] = $data; } return $data; } function save_user($id, $data) { global $app_cache; mysql_query("UPDATE users SET ... WHERE id = " . intval($id)); memcache_delete("user" . $id); unset($app_cache["user" . $id]); }

В реальных приложениях, имеет смысл иметь обертку для Memcache с дополнительным кэшом:

inner_cache)) return $this->inner_cache[$key]; $data = memcache_get($this->resource, $key); $this->inner_cache[$key] = $data; return $data["value"]; } public static function set($key, $value, $ttl) { memcache_set($key, $value, $ttl); $this->inner_cache[$key] = $value; } public static function del($key) { memcache_delete($key); unset($this->inner_cache[$key]); } }

# $inner_cache хранит дополнительный кэш

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

public static $inner_cache_enabled = true; public static function get($key) { if (self::$inner_cache_enabled && array_key_exists($key, $this->inner_cache)) return $this->inner_cache[$key]; $data = memcache_get($this->resource, $key); $this->inner_cache[$key] = $data; return $data["value"]; } public static function set($key, $value, $ttl) { memcache_set($key, $value, $ttl); if (self::$inner_cache_enabled) $this->inner_cache[$key] = $value; } public static function del($key) { memcache_delete($key); unset($this->inner_cache[$key]); } } ... mem_cache::$inner_cache_enabled = false;

# Отключаем внутренний кэш

Подогревание

При обновлении особенно тяжелых данных следует использовать не сброс кэша, а прямое обновление данных в нем:

# операции по обновлению внешних ресурсов $data = file_get_contents("http://rss.com/rss"); memcache_set("rss", $data, 60*60); }

Это позволит избежать дополнительной нагрузки при выполнении тяжелых выборок, когда ключ удаляется. Такую методику обычно используют в cron задачах, чтобы периодически обновлять результаты очень тяжелых выборок.

Время жизни (ttl)

ttl (время жизни) — это время, после которого, данные будут удалены из кэша. В Memcache устанавливается в секундах:

60*60 );

# Установка ttl на 1 час

Чаще всего ttl ставят от нескольких минут до нескольких дней. Не используйте значение 0 (бесконечное хранение), это может засорить память.

LRU

Любой кэш работает по принципу вытеснения если ему не хватает памяти. Т.е. если Memcache может использовать максимум 1G памяти, а Вы пытаетесь сохранить ключей на 2G, то половину из этих данных Memcache удалит. Для определения, какие именно ключи удалять, используется алгоритм LRU (Least Recently Used):

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

Кэширование очень медленных запросов

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

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

Атомарные операции

Иногда в кэше хранятся счетчики (например, количество пользователей). При добавлении новых пользователей, вместо сброса счетчика и повторной выборки, можно просто увеличить значение кэша на единицу. Но сделать это через приложение нельзя, т.к. это приведет к потере данных от двух одновременно выполненных запросов:

Memcache поддерживает две атомарные операции увеличения и уменьшения чисел:

# Увеличит счетчик на 1, функция memcache_decrement() уменьшает счетчик

Самое важное

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

Похожие статьи