моя контактная информация
Почтамезофия@protonmail.com
2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Чтобы помочь всем на собеседовании, для студентов, которые все еще не уверены в Redis, мы собрали 40 распространенных вопросов на собеседовании по Redis, чтобы вы не паниковали во время собеседования и стремились получить предложение!
1. Что такое Редис?
Redis имеет полностью открытый исходный код и бесплатен, соответствует протоколу BSD и представляет собой высокопроизводительную базу данных «ключ-значение».
Redis имеет следующие три характеристики по сравнению с другими продуктами кэширования значений ключей:
Redis поддерживает сохранение данных. Он может сохранять данные в памяти на диск и загружать их снова для использования при перезапуске.
Redis не только поддерживает простые данные типа «ключ-значение», но также обеспечивает хранение структур данных, таких как список, набор, zset и хеш.
Redis поддерживает резервное копирование данных, то есть резервное копирование данных в режиме «главный-подчиненный».
Преимущества Редиса:
Чрезвычайно высокая производительность: Redis может читать со скоростью 110 000 раз в секунду и писать со скоростью 81 000 раз в секунду.
Богатые типы данных: Redis поддерживает операции с типами данных Strings, Lists, Hashes, Sets и Ordered Sets в двоичных случаях.
Атомарный: все операции в Redis являются атомарными, то есть они либо выполняются успешно, либо не выполняются вообще. Отдельные операции являются атомарными. Множественные операции также поддерживают транзакции, то есть атомарность, обернутую инструкциями MULTI и EXEC.
Богатые возможности: Redis также поддерживает публикацию/подписку, уведомления, срок действия ключа и другие функции.
Чем Redis отличается от других хранилищ «ключ-значение»?
Redis имеет более сложные структуры данных и выполняет над ними атомарные операции. Это путь эволюции, отличающийся от других баз данных. Типы данных Redis основаны на базовых структурах данных и прозрачны для программистов без необходимости использования дополнительных абстракций.
Redis работает в памяти, но может сохраняться на диске, поэтому при высокоскоростном чтении и записи различных наборов данных приходится выбирать между объемом памяти, поскольку объем данных не может превышать объем аппаратной памяти. Еще одним преимуществом баз данных в памяти является то, что по сравнению с такими же сложными структурами данных на диске работа с памятью очень проста, поэтому Redis может делать множество вещей с большой внутренней сложностью. Кроме того, с точки зрения формата диска они компактны и генерируются добавлением, поскольку не требуют произвольного доступа.
2. Каковы типы данных Redis?
Redis поддерживает пять типов данных: string (строка), hash (хеш), list (список), set (набор) и zsetsorted set (упорядоченный набор).
В наших реальных проектах чаще всего используются строка и хеш. Если вы являетесь пользователем Redis среднего и продвинутого уровня, вам также необходимо добавить следующие структуры данных HyperLogLog, Geo и Pub/Sub.
Если вы скажете, что также играли с модулями Redis, такими как BloomFilter, RedisSearch и Redis-ML, глаза интервьюера засияют.
3. Каковы преимущества использования Redis?
Это быстро, поскольку данные хранятся в памяти, аналогично HashMap. Преимущество HashMap в том, что временная сложность поиска и работы составляет O1).
Поддерживает расширенные типы данных, включая строку, список, набор, Zset, хеш и т. д.
Поддерживает транзакции, все операции являются атомарными. Так называемая атомарность означает, что все изменения данных либо выполняются, либо не выполняются вообще.
Богатые функции, могут использоваться для кэширования, обмена сообщениями, установки срока действия по ключу, он будет автоматически удален после истечения срока действия.
4. Каковы преимущества Redis по сравнению с Memcached?
Все значения в Memcached — это простые строки, а Redis, как его замена, поддерживает более богатые классы данных.
Redis намного быстрее Memcached
Redis может сохранять свои данные
5. В чем разница между Memcache и Redis?
Метод хранения Memecache сохраняет все данные в памяти. После сбоя питания данные не могут превысить размер памяти. Redis частично хранится на жестком диске, что обеспечивает долговечность данных.
Типы поддержки данных Поддержка типов данных в Memcache относительно проста. Redis имеет сложные типы данных.
Используемые базовые модели различаются по базовым методам реализации и протоколам приложений для связи с клиентами. Redis напрямую создает свой собственный механизм виртуальной машины, потому что, если общая система вызывает системные функции, она будет тратить определенное количество времени на перемещение и запрос.
6. Является ли Redis однопроцессным и однопоточным?
Redis — это один процесс и один поток. Redis использует технологию очередей для преобразования одновременного доступа в последовательный доступ, устраняя накладные расходы, связанные с традиционным последовательным управлением базой данных.
7. Какова максимальная емкость интеллектуального хранилища строкового типа?
512M.
8. Каков механизм сохранения данных в Redis? Каковы преимущества и недостатки каждого из них?
Redis предоставляет два механизма сохранения: механизмы RDB и AOF:
Метод сохранения RDB (Redis DataBase): относится к записи всех пар ключ-значение базы данных Redis в полупостоянном режиме с использованием снимка набора данных и записи данных во временный файл в определенный момент времени после сохранения. завершено, используйте этот временный файл заменяет последний сохраненный файл для восстановления данных.
преимущество:
Файл dump.rdb всего один, что удобно для сохранения.
Катастрофоустойчивость хорошая, файл можно сохранить на безопасный диск.
Чтобы максимизировать производительность, разветвите дочерний процесс, чтобы завершить операцию записи и позволить основному процессу продолжить обработку команд, чтобы максимизировать объем ввода-вывода. Используйте отдельный подпроцесс для сохранения, и основной процесс не будет выполнять никаких операций ввода-вывода, обеспечивая высокую производительность Redis.
Когда набор данных большой, эффективность запуска выше, чем AOF.
Недостатки: низкая безопасность данных. RDB сохраняется через определенные промежутки времени. Если Redis выйдет из строя во время сохранения, произойдет потеря данных.Поэтому этот метод больше подходит, когда требования к данным не являются строгими.
Метод сохранения AOF (файл только для добавления): означает, что все записи командной строки полностью сохраняются и сохраняются как файлы aof в формате протокола запроса команд Redis.
преимущество:
В целях безопасности данных постоянство AOF можно настроить с помощью атрибута addfsync. Если он всегда есть, каждая операция команды будет записываться в файл AOF.
Записывая файлы в режиме добавления, даже если сервер выйдет из строя посередине, проблему согласованности данных можно решить с помощью инструмента redis-check-aof.
Режим перезаписи механизма AOF. Прежде чем файл AOF будет перезаписан (команды будут объединены и перезаписаны, если файл слишком велик), вы можете удалить некоторые команды (например, случайно выполненную командуlushall).
недостаток:
Файлы AOF больше, чем файлы RDB, и восстанавливаются медленнее.
Когда набор данных большой, эффективность запуска ниже, чем у RDB.
9. Распространенные проблемы с производительностью Redis и их решения
Master лучше не записывать снимки памяти. Если Master записывает снимки памяти, команда save планирует функцию rdbSave, которая заблокирует работу основного потока. Когда снимок относительно большой, влияние на производительность будет очень большим, и обслуживание будет периодически приостанавливаться.
Если данные важны, ведомое устройство включает резервное копирование данных AOF, и политика настроена на синхронизацию одних данных в секунду.
Для скорости репликации «главный-подчиненный» и стабильности соединения лучше всего, чтобы «Мастер» и «Слейв» находились в одной локальной сети.
Старайтесь избегать добавления подчиненных устройств в основную базу данных, находящуюся в стрессе.
Не используйте структуру графа для репликации главный-подчиненный. Более стабильно использовать структуру одностороннего связанного списка, то есть: Главный.