Я читал некоторые документы Redis и пробовал учебник по адресу http://try.redis-db.com/ . Пока что я не вижу никакой разницы между Redis и технологиями кэширования, такими как Velocity или Enterprise Library Caching Framework.
Вы фактически просто добавляете объекты в хранилище данных в памяти, используя уникальный ключ. Кажется, нет никакой реляционной семантики ...
Чего мне не хватает?
Ответы:
Нет, Redis - это больше, чем кеш.
Как и кэш, Redis хранит пары ключ = значение. Но в отличие от кеша, Redis позволяет вам работать со значениями. В Redis существует 5 типов данных: строки, наборы, хэш, списки и отсортированные наборы. Каждый тип данных предоставляет различные операции.
Лучший способ понять Redis - это смоделировать приложение, не задумываясь о том, как вы собираетесь хранить его в базе данных.
Допустим, мы хотим построить StackOverflow.com. Для простоты нам нужны Вопросы, Ответы, Теги и Пользователи.
Вопросы моделирования, пользователи и ответы
Каждый объект может быть смоделирован как карта. Например, вопрос - это карта с полями {id, title, date_asked, Голосование, ask_by, статус}. Аналогично, ответ - это карта с полями {id, question_id, answer_text, answer_by, voice, status}. Точно так же мы можем моделировать пользовательский объект.
Каждый из этих объектов может быть непосредственно сохранен в Redis как хэш. Для генерации уникальных идентификаторов вы можете использовать атомарную команду приращения. Что-то вроде этого -
Обработка голосов
Теперь, каждый раз, когда кто-то поднимает вопрос или ответ, вам просто нужно сделать это
Список вопросов для домашней страницы
Далее мы хотим сохранить самые последние вопросы для отображения на главной странице. Если бы вы писали программу на .NET или Java, вы бы сохраняли вопросы в списке. Оказывается, это лучший способ хранить это и в Redis.
Каждый раз, когда кто-то задает вопрос, мы добавляем его идентификатор в список.
Теперь, когда вы хотите отобразить свою домашнюю страницу, вы задаете Redis последние 25 вопросов.
Теперь, когда у вас есть идентификаторы, извлеките элементы из Redis, используя конвейерную обработку, и покажите их пользователю.
Вопросы по тэгам, отсортированные по голосам
Далее мы хотим получить вопросы для каждого тега. Но SO позволяет вам видеть вопросы с наибольшим количеством голосов, новые вопросы или вопросы без ответа под каждым тегом.
Чтобы смоделировать это, мы используем функцию сортированного набора Redis. Сортированный набор позволяет связать оценку с каждым элементом. Затем вы можете получить элементы на основе их оценки.
Давайте сделаем это для тега Redis
Что мы здесь сделали? Мы добавили вопросы в отсортированный набор и привязали оценку (количество голосов) к каждому вопросу. Каждый раз, когда вопрос ставится на голосование, мы будем увеличивать его оценку. И когда пользователь нажимает кнопку «Вопросы с меткой Redis, отсортированные по голосам», мы просто делаем
zrevrange
ответ и возвращаем главные вопросы.Вопросы в реальном времени без обновления страницы
И, наконец, бонусная функция. Если вы оставите страницу с вопросами открытой, SO уведомит вас, когда будет добавлен новый вопрос. Как Redis может помочь здесь?
Redis имеет модель паб-саб. Вы можете создавать каналы, например "channel_questions_tagged_redis". Затем вы
subscribe
пользователи определенного канала. Когда добавляется новый вопрос, вы отправляетеpublish
сообщение на этот канал. Все пользователи получат сообщение. Вам придется использовать веб-технологию, такую как веб-сокеты или кометы, для фактической доставки сообщения в браузер, но Redis поможет вам со всеми системами на стороне сервера.Настойчивость, надежность и т. Д.
В отличие от кэша, Redis сохраняет данные на жестком диске. Вы можете настроить главный-подчиненный для обеспечения большей надежности. Чтобы узнать больше, просмотрите темы Постоянства и Репликации здесь - http://redis.io/documentation
источник
Не просто кеш.
источник
Redis обладает уникальными способностями, такими как сверхбыстрые lua-скрипты. Время его выполнения равняется выполнению Си-команд. Это также обеспечивает атомарность для сложных манипуляций с данными Redis, необходимых для работы многих сложных объектов, таких как Locks и Semaphores.
Существует Redis, основанный на сетке данных памяти под названием Redisson, которая позволяет легко создавать распределенные приложения на Java . Благодаря распределенным
Lock
,Semaphore
,ReadWriteLock
,CountDownLatch
,ConcurrentMap
объекты и многим другим.Прекрасно работает в облаке и поддерживает AWS Elasticache , AWS Elasticache Cluster и Azure Redis кэша поддержки
источник
На самом деле нет никакой зависимости между относительным представлением данных (или любым типом представления данных) и ролью базы данных (кеш, постоянное постоянство и т. Д.).
Redis хорош для кеша, но это гораздо больше, чем просто кеш. Это высокоскоростная база данных в оперативной памяти. Сохраняет данные на диске. Это не реляционное, это хранилище ключей и значений.
Мы используем его в производстве. Redis помогает нам создавать программное обеспечение, которое обрабатывает тысячи запросов в секунду и сохраняет бизнес-данные клиентов в течение всего естественного жизненного цикла.
источник
Redis - это кеш, который лучше всего подходит для распределенной среды / архитектуры микросервиса.
Он быстрый, надежный, обеспечивает атомарность и согласованность и имеет ряд типов данных, таких как наборы, хэши, списки и т. Д.
Я использую его с прошлого года, и это действительно помогает, если вам нужно очень быстро предоставить готовое к работе решение для любых проблем, связанных с производительностью, поскольку вы всегда можете использовать его для кэширования данных.
источник
Помимо того, что сервер кэширования, Redis является, в частности, сервером структуры данных. Быть кешем в виде сервера структуры данных очень много значит, потому что структуры данных являются основой программ или приложений . Представьте, что вы используете базы данных SQL в качестве технологии хранения и вам нужно создать список, хэш-карту, набор ранжирования или тому подобное, это своего рода боль в шее. Redis может предоставить вам эти функции напрямую, очень простым способом, что значительно упростит разработку.
С другой стороны, сервер структуры данных не обязательно должен быть в форме кеша. Существуют проекты, совместимые с Redis, но с постоянными механизмами хранения.
источник
Redis поддерживает структуры данных, такие как строки, хэши, списки, наборы, отсортированные наборы с запросами диапазона, растровые изображения, гиперлогоги, геопространственные индексы с запросами радиуса и потоками. Redis имеет встроенную репликацию, сценарии Lua, исключение LRU, транзакции и различные уровни сохранения на диске, а также обеспечивает высокую доступность через Redis Sentinel и автоматическое разбиение с помощью Redis Cluster.
реализация с питоном
https://beyondexperiment.com/vijayravichandran06/redis-data-structure-with-python/
источник