Проще говоря, Redis — это база данных.
В отличие от традиционных баз данных, которые хранят данные на диске, Redis хранит данные в памяти, поэтому ее часто называют базой данных в памяти; в то же время хранилище Redis также называют базой данных NoSQL, нереляционной базой данных.
Поскольку Redis хранит данные в памяти, скорость чтения и записи будет очень высокой, поэтому Redis широко используется для кэширования или других сценариев, требующих высокой скорости чтения и записи.
Зачем использовать Redis
Redis был введен в архитектуру программного обеспечения, потому что он«Быстрый и сильный».
1. Быстрота означает высокую производительность
Скорость аппаратного обеспечения компьютера от низкой до высокой: жесткий диск - сеть - память - ЦП;
В традиционной базе данных, если вы обращаетесь к части данных в базе данных в первый раз, это обычно происходит медленно, потому что базе данных необходимо считывать данные с жесткого диска, а данные в Redis хранятся в памяти, поэтому скорость будет быть быстрее, чем с жесткого диска.Чтение данных с диска намного быстрее.
Таким образом, мы часто используем Redis в качестве кэша: в первый раз прочитайте данные из базы данных, поместите его в Redis, а затем напрямую доступ к Redis.
2. Сильный, относится к стабильности в сценариях с высоким параллелизмом (высокая доступность).
В сценариях с высоким параллелизмом ограничение доступа, которое может выдержать Redis, намного больше, чем у базы данных, поэтому мы можем рассмотреть возможность размещения данных, требующих большого количества параллельных операций чтения, в Redis;
Например, с функцией seckill всего за несколько секунд могут быть сотни тысяч посещений, а при непосредственном управлении базой данных она может быть уничтожена в одно мгновение.
Какие сценарии не подходят для установки Redis
Конечно,Нельзя сказать, что все сценарии и все данные подходят для размещения в Redis., обычно нам нужно учитывать следующие моменты:
- Высока ли частота попаданий при запросе данных? Если частота попаданий в кеш очень низкая, нет необходимости помещать его в Redis;
- Сколько операций чтения и записи данных существует? Если данные будут часто записываться (добавляться, изменяться, удаляться), а количество операций записи установлено больше, чем количество операций чтения, то нет необходимости использовать Redis;
- Каков размер бизнес-данных? Если вы хотите хранить файлы, нет никакой необходимости помещать их в Redis.
Локальный кеш или Redis
Кэш делится на локальный кеш и распределенный кеш:
Локальный кеш
Такие, как Guava, Ehcache, даже для сохранения кэшированной карты, это локальный кэш;
Локальный кеш отличается малым весом и простотой реализации, а его жизненный цикл заканчивается с уничтожением JVM, однако при наличии нескольких экземпляров программы (разворачивается несколько наборов программ) кеш в каждом экземпляре не последовательный.
2. Распределенный кеш
Redis называется распределенным кешем.При наличии нескольких экземпляров программы каждый экземпляр может совместно использовать кэшированные данные в Redis, но в то же время из-за внедрения Redis необходимо обеспечить высокую доступность Redis, да и архитектура сложнее.
Redis or Memcached
Memcached также часто используется в качестве кеша, а также является типом распределенного кеша, так в чем же разница между ним и Redis?
- Redis поддерживает более богатые типы данных, а Memcache поддерживает простой тип данных String;
- Redis поддерживает сохранение данных, что позволяет сохранять данные в памяти на жесткий диск и загружать данные в память после перезапуска, в то время как Memcache сохраняет данные только в памяти;
- Redis в настоящее время поддерживает модель кластера, но нет собственной модели кластера Memcached, потребители должны добиться самостоятельно;
- Redis использует однопоточную мультиплексирующую модель ввода-вывода (Redis поддерживает многопоточность в последней версии 6.0); Memcached использует многопоточную модель мультиплексирования ввода-вывода.
Последний, но тем не менее важный,Вы собираетесь представить Redis? Использовать локальный кеш или распределенный кеш? Необходимо исходить из реальной ситуации проекта; Богатые типы данных Redis и поддержка персистентности больше подходят для нашего проекта.
Дядя, который знает код | Текст [Оригинал]