Рубрики
Uncategorized

Memcache и Redis (3)

Автор оригинала: David Wong.

Привет, это моя память. Сегодня пятница, еще один рабочий день в выходные, заранее желаю вам счастливых выходных. Эй. Эта статья является обычной темой для баз данных Memcache и Redis памяти на этой неделе. Обновленные пути к статьям в понедельник и среду: Memcache и Redis (1) Memcache и Redis (2) На этой неделе (2019.2-с 18 по 2-22) пункты содержания статей по следующим пунктам, время обновления-среда, среда и пятница, вы можете обратить внимание на эту колонку, продолжая уделять внимание, спасибо за вашу поддержку.

1. Что такое Memcache? 2. Каковы характеристики Memcache? В-третьих, каков механизм управления памятью Memcache? 4. В чем разница между Memcached и Memcached? 5. Как управлять Memcache? 6. Как использовать Memcache для совместного использования сеансов? 7. Что такое Redis? 8. Как использовать Redis? 9. На какие проблемы следует обратить внимание при использовании Redis? 10. Новые дополнения: В чем разница между Redis и Memcache? 11. Добавлено: Как Redis достигает постоянства? 12. Memcache и Редис Частые экзаменационные вопросы

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

Я сам организовал пьесу.” О чем спрашивает PHP на разных уровнях интервью? “Обратите внимание на общедоступный номер:” Библиотека программирования Рюэйи “Ответ:” Оценка Я пришлю его вам.

Часть следующего текста взята из Анализа письменных экзаменационных вопросов для PHP-программистов Интервью Книг, если они воспроизведены, пожалуйста, сохраните источник:

Каков принцип работы Memcache?

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

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

В чем преимущества Memcache?

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

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

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

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

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

Как разумно использовать кэш Memcached cache? Если объем кэшированных данных слишком велик, как его развернуть? (Распределенное, время кэширования, оптимизация кэширования данных)

Ответ: Если вы хотите разумно использовать кэш Memcache, вам необходимо обратить внимание на следующие моменты:

((1) Поскольку Memcached поддерживает самый большой размер объекта хранения 1 М, при разумном использовании кэша Memcached cache требуется, чтобы в Memcache не хранились данные размером более 1 МБ.

(2) Все данные, хранящиеся в Memcache, приведут к большой трате памяти и исключению Memcache, если размер данных распределен по различным блокам размером от 64 Б до 1 МБ. Поэтому нам нужно обратить внимание на диапазон распределения размера данных.

(3) Длина ключа не должна превышать 250 символов.

(4) Виртуальным хостам запрещено запускать службы Memcache, поэтому они не могут развернуть Memcache на виртуальных хостах.

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

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

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

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

В чем разница между Redis и Memcache?

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

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

У них есть следующие различия: (1) Самая большая разница между Redis и Memcache заключается в том, что, хотя и Memcache, и Redis хранят данные в памяти, которая является базой данных памяти, не все данные хранятся в памяти все время при хранении Redis, в то время как данные хранятся в памяти при хранении Memcache.

(2) Проблема безопасности данных. Поскольку memcache хранит все данные в памяти, данные сервера будут потеряны после зависания сервера. Redis может регулярно сохранять данные на диск для постоянного хранения, а при необходимости их можно перезагружать и использовать. Для аварийного восстановления данные не могут быть восстановлены после зависания Memcache, но могут быть восстановлены через A после потери данных Redis.

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

(4) Проблема резервного копирования данных, Redis поддерживает резервное копирование данных, то есть резервное копирование данных в режиме master-slave. Memcache не поддерживает сохранение данных, поэтому он не может создавать резервные копии данных.

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

((6) По сравнению с Redis, Memcached поддерживает несколько потоков, в то время как Redis поддерживает только отдельные потоки, поэтому Memcached лучше Redis по загрузке процессора.

(7) Все они должны быть сгруппированы для расширения, такие как master-slave и хэш.

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

[Тема 5] Что должен делать кластер Redis? Каковы наши планы?

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

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

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

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

Я сам организовал пьесу.” О чем спрашивает PHP на разных уровнях интервью? “Обратите внимание на общедоступный номер:” Библиотека программирования Рюэйи “Ответ:” Оценка Я пришлю его вам.

Каковы подходящие сценарии для Redis?

Ответ: (1) Кэш сеанса

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

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

(2) Кэш полной страницы (FPC)

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

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

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

(3) Очередь

Преимущество Reid заключается в том, что он предоставляет операции со списком и набором в области механизмов хранения памяти, что делает Red хорошей платформой для организации очереди сообщений. Работа Redis в качестве очереди аналогична операции push/pop со списком на локальном языке программирования, таком как Python.

Если вы быстро выполните поиск “очередей Redis” в Google, вы скоро найдете большое количество проектов с открытым исходным кодом, которые используют Redis для создания очень хороших внутренних инструментов для удовлетворения различных требований к очередям. Например, у Сельдерея есть фон, который использует Redis в качестве брокера, который вы можете просмотреть здесь.

(4) Рейтинги/Счетчики

Redis очень хорошо увеличивает или уменьшает числа в памяти. Наборы и сортированные наборы также очень облегчают нам выполнение этих операций. Redis просто предоставляет эти две структуры данных. Итак, нам нужно получить 10 лучших пользователей из отсортированного набора — “user_scores”, который мы называем “user_scores”. Нам просто нужно выполнить следующее:

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

ДИАПАЗОН user_scores 0 10 С ОЦЕНКАМИ

Хорошим примером являются игры Agora. Это реализовано в Ruby. Его ранжирование заключается в использовании Redis для хранения данных. Вы можете увидеть это здесь.

(5) Публикация/Подписка

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

Как можно расширить постоянные данные и кэш Redis?

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

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

Как работает процесс переработки Redis?

Ответ: Клиент запускает новые команды и добавляет новые данные.

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

Выполняется новая команда и так далее.

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

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

Каковы способы уменьшить использование памяти с покраснением?

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

[Тема 10] Знаете ли вы какие-либо схемы реализации разделов Redis?

Ответ: Разделение клиента-это когда клиент уже решил, на каком узле redis будут храниться или считываться данные. Большинство клиентов внедрили разделение клиентов.

Разделение прокси-сервера означает, что клиент отправляет запрос прокси-серверу, а затем прокси-сервер решает, на какой узел записывать или считывать данные. Агент решает, какие экземпляры Redis запрашивать в соответствии с правилами раздела, а затем возвращает их клиенту на основе результатов ответа Redis. Прокси – реализация redis и memcached-это Twemproxy

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

Когда вы проводите собеседование для разных уровней PH, Какие вопросы о знаниях будут заданы на общем экзамене по PHP, который будет организован в статью? Я сам организовал пьесу.” О чем спрашивает PHP на разных уровнях интервью? “Обратите внимание на общедоступный номер:” Библиотека программирования Рюэйи “Ответ:” Оценка Я пришлю его вам.

Дополнительные вопросы об интервью можно прочитать Анализ письменных экзаменационных вопросов для интервью с PHP-программистами

Прогноз: Тема, которая будет обновлена на следующей неделе (2019.2.25-2019.3.1) 135: Контроль разговоров, Сетевой протокол и связанные с этим вопросы для интервью в интервью PHP

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

Дополнительные знания о собеседовании и экзаменационные вопросы, связанные с PHP, могут быть связаны с приобретением общедоступного номера: Библиотека программирования Ryueyi

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