Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 18:49
Оценка: -3
Коллеги,
Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.
Re: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 09.01.19 18:56
Оценка: +1
G>Коллеги,
G>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.

Распределённый кэш.
Нет времени на раскачку!
Re: Зачем нужен Redis?
От: Danchik Украина  
Дата: 09.01.19 18:57
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги,

G>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.

Да кагбы понятно, если не как база данных то бесплатно это:
Message Queue
Cache

Sql Server в те времена был слишком платным, а развернуть MMQ был еще тот квест (по слухам).
Re[2]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 19:34
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Здравствуйте, Gattaka, Вы писали:


G>>Коллеги,

G>>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.

D>Да кагбы понятно, если не как база данных то бесплатно это:

D>Message Queue
— реббит, кафка

D>Cache

? зачем? оперативка приложения.

D>Sql Server в те времена был слишком платным, а развернуть MMQ был еще тот квест (по слухам).

Что это такое?
Re[2]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 19:35
Оценка: -1
Здравствуйте, СвободуАнжелеДевис, Вы писали:


G>>Коллеги,

G>>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.

САД>Распределённый кэш.

Окей, простой вопрос на который вам не составит труда ответить. Зачем нужен распределенный кеш при наличии БД?
Re: GarryIV, я расцениваю это как успех
От: Gattaka Россия  
Дата: 09.01.19 19:38
Оценка: +2 :)))
GarryIV моментально влепил минус. Без аргументов, без ответа. Это успех. В священных войнах это успех.
Вполне возможно, что одним только своим вопросом я отправил опонента в больницу. Он успел только поставить минус и схватился за сердце... "Ааа.... мой редис, редис... сердце!" И упал со стула.
Успех! Хорошо! Как же я силен в этих самых войнах священных.
Re: Зачем нужен Redis?
От: A_l_e_x_e_y Россия  
Дата: 09.01.19 19:43
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги,

G>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.

Sorted Sets.
Re[2]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 19:55
Оценка:
Здравствуйте, A_l_e_x_e_y, Вы писали:

A__>Здравствуйте, Gattaka, Вы писали:


G>>Коллеги,

G>>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.

A__>Sorted Sets.

Что sorted sets? Это алгоритм такой, для использования которого не нужно ставить себе Redis. Между прочим.
Re[3]: Зачем нужен Redis?
От: Anton Batenev Россия https://github.com/abbat
Дата: 09.01.19 20:10
Оценка: +1
Здравствуйте, Gattaka, Вы писали:

G> D>Message Queue

G> — реббит, кафка

Кролик крайне плохо работает в cross-dc окружении (особенно когда начинаются проблемы с сетью — проще сказать, что он не работает). Кафка — это Java, ZooKeeper, кровь, кишки, сожрало память, завалило трейсами.

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

G> D>Cache

G> ? зачем? оперативка приложения.

Тут, вероятно, имелся ввиду distributed cache. Но даже в рамках одного хоста далеко не всегда есть возможность или целесообразность делать кэш в памяти приложения (например для prefork модели или микросервисов).
Бэкапимся на Яндекс.Диск
Re[3]: Зачем нужен Redis?
От: A_l_e_x_e_y Россия  
Дата: 09.01.19 20:21
Оценка:
Здравствуйте, Gattaka, Вы писали:

A__>>Sorted Sets.

G>Что sorted sets? Это алгоритм такой, для использования которого не нужно ставить себе Redis. Между прочим.

В редисе есть его качественная реализация что позволяет не реализовывать его самому. На сколько мне известно(конечно я могу ошибаться) в распространённых SQL-базах такой функционал отсутствует.
Re[3]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 09.01.19 20:26
Оценка:
САД>>Распределённый кэш.
G>Окей, простой вопрос на который вам не составит труда ответить. Зачем нужен распределенный кеш при наличии БД?

это может быть необходимо при микросервисной архитектуре.
но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.
Нет времени на раскачку!
Re[4]: Зачем нужен Redis?
От: bzig  
Дата: 09.01.19 20:56
Оценка: 2 (2) +2
САД>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.

Вот тут чуваки выкинули Монго, взяли Постгрис и хранят там JSON

https://www.theguardian.com/info/2018/nov/30/bye-bye-mongo-hello-postgres
Re[5]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 09.01.19 20:57
Оценка:
САД>>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.
B>Вот тут чуваки выкинули Монго, взяли Постгрис и хранят там JSON
B>https://www.theguardian.com/info/2018/nov/30/bye-bye-mongo-hello-postgres

как key-value любая база работает быстро.
но я думаю что основной посыл автора был в другом.
Нет времени на раскачку!
Re[4]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 20:59
Оценка: :)
Здравствуйте, A_l_e_x_e_y, Вы писали:

A__>В редисе есть его качественная реализация что позволяет не реализовывать его самому. На сколько мне известно(конечно я могу ошибаться) в распространённых SQL-базах такой функционал отсутствует.

Распространенные базы данных позволяют тебе не думать об алгоритмах. Ты говоришь что тебе нужно, а они уже сами подбирают алгоритм. И уже сами решают как это сделать.
Re[4]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 21:03
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, Gattaka, Вы писали:


G>> D>Message Queue

G>> — реббит, кафка

AB>Кролик крайне плохо работает в cross-dc окружении (особенно когда начинаются проблемы с сетью — проще сказать, что он не работает). Кафка — это Java, ZooKeeper, кровь, кишки, сожрало память, завалило трейсами.


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


G>> D>Cache

G>> ? зачем? оперативка приложения.

AB>Тут, вероятно, имелся ввиду distributed cache. Но даже в рамках одного хоста далеко не всегда есть возможность или целесообразность делать кэш в памяти приложения (например для prefork модели или микросервисов).

Вот зачем давать такие многозначительные ответы, чтобы люди потом гадали что имелось в виду? Да чтобы казаться умнее. Потому как если много скажешь — сразу станет понятно, что аргументов то и нет.

И чем же он так хорош как ditributed cache? Как у него с отказоустойчивостью. Если значение попало на одну ноду редиса, то как скоро оно доберется до другой ноды?
В обще зачем нужен distributed cache? Можно конкретный пример?
Re[4]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 21:05
Оценка:
Здравствуйте, СвободуАнжелеДевис, Вы писали:


САД>>>Распределённый кэш.

G>>Окей, простой вопрос на который вам не составит труда ответить. Зачем нужен распределенный кеш при наличии БД?

САД>это может быть необходимо при микросервисной архитектуре.

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

САД>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.

Так сделайте materialized view. Есть такое понятие buffer pool. Он работает быстрее чем редис.
Re[5]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 09.01.19 21:10
Оценка:
САД>>это может быть необходимо при микросервисной архитектуре.
G>Микросервисная архитектура тут не имеет каких-либо особенностей, отличающей с этой точки зрения от другой архитектуры.

шаринг данных между микросервисами. один из вариантов.

G>Ничего такого микросервисная архитектура не привносит, чтобы нужно было использовать redis. Либо пример конкретный в студию плиз.


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

САД>>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.

G>Так сделайте materialized view. Есть такое понятие buffer pool. Он работает быстрее чем редис.

материализованные вьюхи не всегда работают. особенно если логика выборки сложнее чем обычный селект. а еще бывают динамические запросы в базу
структура базы не всегда может быть нормализована.
Нет времени на раскачку!
Re[5]: Зачем нужен Redis?
От: A_l_e_x_e_y Россия  
Дата: 09.01.19 21:14
Оценка:
Здравствуйте, Gattaka, Вы писали:

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


Ну хорошо. Допустим нам нужно сделать рейтинг игроков онлайн игры обновляемый в реальном времени. Это вполне себе жизненная задача.
Этот рейтинг должен уметь обрабатывать изменения количества очков в реальном времени, выдавать место в рейтинге по идентификатору игрока, количество очков по идентификатору игрока и идентификатор игрока по месту в рейтинге... и делать всё это максимально быстро(и конечно же нужно уметь эти данные сохранять на диске). Конечно же это можно реализовать поверх SQL-базы(ну или скажем MongoDB), но тогда придётся принести в жертву эффективность части из этих операций.
Re[6]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 21:15
Оценка: 1 (1)
Здравствуйте, СвободуАнжелеДевис, Вы писали:

САД>>>это может быть необходимо при микросервисной архитектуре.

G>>Микросервисная архитектура тут не имеет каких-либо особенностей, отличающей с этой точки зрения от другой архитектуры.

САД>шаринг данных между микросервисами. один из вариантов.

Единая точка отказа. Представим, что схема хранимых в редис данных меняется. Обновили для этого один из сервисов. Остальные 4 начали падать. Т.к. не могут десериализовать новые данный. Упс. Нужно было их тоже обновить.
Обновляем в таком случае все 5 микросервисов. Упс. Да это же старый добрый монолит, только разделенный на несколько исполняемых файлов, что лишь добавляет гемора. Айда на хабр писать про провал микросервисов и понеслась. Так оно и бывает.

G>>Ничего такого микросервисная архитектура не привносит, чтобы нужно было использовать redis. Либо пример конкретный в студию плиз.


САД>есть 5 активностей. мы должны прогнать все их 5 через какой-то кусок данных. каждая активность — отдельный микросервис.

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

САД>>>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.

G>>Так сделайте materialized view. Есть такое понятие buffer pool. Он работает быстрее чем редис.

САД>материализованные вьюхи не всегда работают. особенно если логика выборки сложнее чем обычный селект. а еще бывают динамические запросы в базу

САД>структура базы не всегда может быть нормализована.
Окей. Тут скорее всего какая-то дичь с этой самой бизнес логикой. Нужно смотреть откуда взялись эти дикие джойны и постараться свести все к более простым джойнам быть может даже с помощью дублирования данных.
Re[7]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 09.01.19 21:19
Оценка:
САД>>шаринг данных между микросервисами. один из вариантов.
G>Единая точка отказа. Представим, что схема хранимых в редис данных меняется. Обновили для этого один из сервисов. Остальные 4 начали падать. Т.к. не могут десериализовать новые данный. Упс. Нужно было их тоже обновить.

редис — это ин-мемори ДБ. с возможностью персистить данные.
если обновили сервиса — дропнули кэш. всё.

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


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

САД>>есть 5 активностей. мы должны прогнать все их 5 через какой-то кусок данных. каждая активность — отдельный микросервис.

САД>>что бы за этими данными не ходить постоянно в сиквел, они лежат в редисе, после того как вся работа будет проделана, данные сохранятся в сиквел.
G>Недостаток описан выше. Это не микросервисы.

нет никаких недостатков в данном случае.

САД>>материализованные вьюхи не всегда работают. особенно если логика выборки сложнее чем обычный селект. а еще бывают динамические запросы в базу

САД>>структура базы не всегда может быть нормализована.
G>Окей. Тут скорее всего какая-то дичь с этой самой бизнес логикой. Нужно смотреть откуда взялись эти дикие джойны и постараться свести все к более простым джойнам быть может даже с помощью дублирования данных.

нет необходимости извращаться, если есть редис

сиквел быстрый и хороший, но не достаточно быстрый. увы.
потому в хайлоаде юзают денормализацию.
и для распределенных систем он тоже не всегда под все кейсы подходит напрямую.
Нет времени на раскачку!
Re: Зачем нужен Redis?
От: Шубин Евгений Россия http://erladvisor.blogspot.de/
Дата: 09.01.19 21:22
Оценка: +1
Здравствуйте, Gattaka, Вы писали:

Сервис на Руби, база Постгрес. Пишем каршеринг.
Человек забронировал авто бесплатно на 20 минут, потом нужно либо начать брать деньги, либо на разблокировать.
Как сделать таймер? Правильно — Редис.
Re[6]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 21:22
Оценка:
Здравствуйте, A_l_e_x_e_y, Вы писали:

A__>Здравствуйте, Gattaka, Вы писали:


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


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

A__>Этот рейтинг должен уметь обрабатывать изменения количества очков в реальном времени, выдавать место в рейтинге по идентификатору игрока, количество очков по идентификатору игрока и идентификатор игрока по месту в рейтинге... и делать всё это максимально быстро(и конечно же нужно уметь эти данные сохранять на диске). Конечно же это можно реализовать поверх SQL-базы(ну или скажем MongoDB), но тогда придётся принести в жертву эффективность части из этих операций.

Первое что приходит на ум это event sourcing. Поступаю эвенты об изменении рейтинга. Мы их все прихраниваем как пришли в специально обученной таблице. Используем для этого sql server с in memory oltp.
Кроме того есть табличка с актуальными значениями. Тоже in memory oltp.
Преимущества и недостатки подхода с redis.
1. Если нода с редисом навернется, то она не сохранит на диск то что у нее в памяти. Иначе откуда скорость? То есть потеря данных.
2. Все таки что там с отказоустойчивостью редиса? Предположим у меня две ноды редиса. Один мастер, другой слейв.
У меня две апп ноды. В рейтинге есть игрок Вася с рейтингом 100.
а. Приходит событие увеличения рейтинга на 9. Взяли с мастера 100 добавили 9, записали 109 в мастер. Оно полетело в реплику, но еще не долетело.
б. Приходит событие увеличения рейтинга на 8. Взяли с реплики 100 (!) (т.к. еще не долетело) добавили 8, записали в мастер 108. Итого у нас значение рейтинга 108. А должно было быть 117.
Re[2]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 21:28
Оценка: +3
Здравствуйте, Шубин Евгений, Вы писали:

ШЕ>Здравствуйте, Gattaka, Вы писали:


ШЕ>Сервис на Руби, база Постгрес. Пишем каршеринг.

ШЕ>Человек забронировал авто бесплатно на 20 минут, потом нужно либо начать брать деньги, либо на разблокировать.
ШЕ>Как сделать таймер? Правильно — Редис.
А если редис упал? Потеряем те 13 минут что остались у пользователя? Или как?

Такой вариант — заводим в постресе табличку с временем, есть джоба которая раз в 30 сек выгребает оттуда просроченных. Вуаля — все надежно и транзакционно.
Второй вариант заиспользовать раббит с отложенными сообщениями (код получится гораздо проще, чем с redis).
Re[8]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 21:31
Оценка:
Здравствуйте, СвободуАнжелеДевис, Вы писали:

САД>ничего такого не происходит. а вот с сиквелом как раз самое оно. изменили структуру базы данных — нужно обновлять все приложения, которые её юзают

Ну ты как полученные данные из Редис десериализуешь? Вот этот десериализатор тебе ексепшен и кинет. Когда вместо json обнаружит там xml. Положенный другим нерасторопным сервисом. Так то.

САД>>>есть 5 активностей. мы должны прогнать все их 5 через какой-то кусок данных. каждая активность — отдельный микросервис.

САД>>>что бы за этими данными не ходить постоянно в сиквел, они лежат в редисе, после того как вся работа будет проделана, данные сохранятся в сиквел.
G>>Недостаток описан выше. Это не микросервисы.

САД>нет никаких недостатков в данном случае.

Отрицание. Гнев. Принятие. Пока только отрицание идет.

САД>>>материализованные вьюхи не всегда работают. особенно если логика выборки сложнее чем обычный селект. а еще бывают динамические запросы в базу

САД>>>структура базы не всегда может быть нормализована.
G>>Окей. Тут скорее всего какая-то дичь с этой самой бизнес логикой. Нужно смотреть откуда взялись эти дикие джойны и постараться свести все к более простым джойнам быть может даже с помощью дублирования данных.

САД>нет необходимости извращаться, если есть редис


САД>сиквел быстрый и хороший, но не достаточно быстрый. увы.

САД>потому в хайлоаде юзают денормализацию.
САД>и для распределенных систем он тоже не всегда под все кейсы подходит напрямую.
По моим замерам скорость чтения в Sql Server выше, чем в redis. Он его просто обогнал. Да и почему должно быть иначе. Ведь Sql Server хранит также свои данные в buffer pool. Т.е. в оперативной памяти.
ql
Re[9]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 09.01.19 21:34
Оценка: 1 (1) +1
САД>>ничего такого не происходит. а вот с сиквелом как раз самое оно. изменили структуру базы данных — нужно обновлять все приложения, которые её юзают
G>Ну ты как полученные данные из Редис десериализуешь? Вот этот десериализатор тебе ексепшен и кинет. Когда вместо json обнаружит там xml. Положенный другим нерасторопным сервисом. Так то.

еще раз — кэш будет сброшен и заполнен заново в новом формате.

САД>>нет никаких недостатков в данном случае.

G>Отрицание. Гнев. Принятие. Пока только отрицание идет.

повторяй эту мантру перед сном.

САД>>сиквел быстрый и хороший, но не достаточно быстрый. увы.

САД>>потому в хайлоаде юзают денормализацию.
САД>>и для распределенных систем он тоже не всегда под все кейсы подходит напрямую.
G>По моим замерам скорость чтения в Sql Server выше, чем в redis. Он его просто обогнал. Да и почему должно быть иначе. Ведь Sql Server хранит также свои данные в buffer pool. Т.е. в оперативной памяти.

когда у нас кластер и несколько, допустим, веб-нод, каждая может держать свой кеш рядом с собой в редисе. попробуй поставить столько сиквелов.
посмотрим что это будет по ресурсам и деньгам
Нет времени на раскачку!
Re[10]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 09.01.19 21:38
Оценка:
Здравствуйте, СвободуАнжелеДевис, Вы писали:

САД>>>ничего такого не происходит. а вот с сиквелом как раз самое оно. изменили структуру базы данных — нужно обновлять все приложения, которые её юзают

G>>Ну ты как полученные данные из Редис десериализуешь? Вот этот десериализатор тебе ексепшен и кинет. Когда вместо json обнаружит там xml. Положенный другим нерасторопным сервисом. Так то.

САД>еще раз — кэш будет сброшен и заполнен заново в новом формате.

Кем он сброшен будет? Новым сервисом? Т.е. выкатка бьет по перфомансу всей системы? Это успех!



САД>>>сиквел быстрый и хороший, но не достаточно быстрый. увы.

САД>>>потому в хайлоаде юзают денормализацию.
САД>>>и для распределенных систем он тоже не всегда под все кейсы подходит напрямую.
G>>По моим замерам скорость чтения в Sql Server выше, чем в redis. Он его просто обогнал. Да и почему должно быть иначе. Ведь Sql Server хранит также свои данные в buffer pool. Т.е. в оперативной памяти.

САД>когда у нас кластер и несколько, допустим, веб-нод, каждая может держать свой кеш рядом с собой в редисе. попробуй поставить столько сиквелов.

САД>посмотрим что это будет по ресурсам и деньгам
И так ясно, оперативка дорогая. Веб ноды будут золотыми буквально. Врят ли они будут утилизировать всегда всю память. Это успех. Плюс. В докере должен быть только один процесс. Так что опять успех!
Re[11]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 09.01.19 21:43
Оценка:
САД>>еще раз — кэш будет сброшен и заполнен заново в новом формате.
G>Кем он сброшен будет? Новым сервисом? Т.е. выкатка бьет по перфомансу всей системы? Это успех!

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

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

САД>>когда у нас кластер и несколько, допустим, веб-нод, каждая может держать свой кеш рядом с собой в редисе. попробуй поставить столько сиквелов.

САД>>посмотрим что это будет по ресурсам и деньгам
G>И так ясно, оперативка дорогая. Веб ноды будут золотыми буквально. Врят ли они будут утилизировать всегда всю память. Это успех. Плюс. В докере должен быть только один процесс. Так что опять успех!

кому должен?
какой-то бесмысленный пост у тебя получился

ты почему-то думаешь что кроме твоей единственной "правильной" архитектуры больше ничего нет. но увы, это не так.
Нет времени на раскачку!
Re[7]: Зачем нужен Redis?
От: A_l_e_x_e_y Россия  
Дата: 09.01.19 22:15
Оценка:
Здравствуйте, Gattaka, Вы писали:

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

A__>>Этот рейтинг должен уметь обрабатывать изменения количества очков в реальном времени, выдавать место в рейтинге по идентификатору игрока, количество очков по идентификатору игрока и идентификатор игрока по месту в рейтинге... и делать всё это максимально быстро(и конечно же нужно уметь эти данные сохранять на диске). Конечно же это можно реализовать поверх SQL-базы(ну или скажем MongoDB), но тогда придётся принести в жертву эффективность части из этих операций.

G>Первое что приходит на ум это event sourcing. Поступаю эвенты об изменении рейтинга. Мы их все прихраниваем как пришли в специально обученной таблице. Используем для этого sql server с in memory oltp.

G>Кроме того есть табличка с актуальными значениями. Тоже in memory oltp.

Очевидно что это будет работать существенно медленней и будет потреблять существенно больше памяти чем это делает редис... И что-то мне подсказывает что разница будет на столько велика что на одинаковом железе редис сможет обработать в десятки(по меньшей мере) раз большее количество запросов.

G>Преимущества и недостатки подхода с redis.

G>1. Если нода с редисом навернется, то она не сохранит на диск то что у нее в памяти. Иначе откуда скорость? То есть потеря данных.

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

Редис пишет на диск приходящие команды и уровень надёжности настраиваться — можно удовлетвориться отправкой данных ОС, а можно дождаться от неё подтверждения записи.

G>2. Все таки что там с отказоустойчивостью редиса? Предположим у меня две ноды редиса. Один мастер, другой слейв.

G>У меня две апп ноды. В рейтинге есть игрок Вася с рейтингом 100.
G>а. Приходит событие увеличения рейтинга на 9. Взяли с мастера 100 добавили 9, записали 109 в мастер. Оно полетело в реплику, но еще не долетело.
G>б. Приходит событие увеличения рейтинга на 8. Взяли с реплики 100 (!) (т.к. еще не долетело) добавили 8, записали в мастер 108. Итого у нас значение рейтинга 108. А должно было быть 117.

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

Производительность редиса достаточно велика чтобы необходимость разделения таблицы не несколько машин возникала у пары десятков проектов в мире у которых определённо хватит ресурсов для того чтобы сделать ещё более специализированное решение, отвечающее их нуждам.
Re[3]: Зачем нужен Redis?
От: Danchik Украина  
Дата: 10.01.19 04:14
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Здравствуйте, Danchik, Вы писали:


D>>Здравствуйте, Gattaka, Вы писали:


G>>>Коллеги,

G>>>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>>>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.

D>>Да кагбы понятно, если не как база данных то бесплатно это:

D>>Message Queue
G>- реббит, кафка
Это сейчас то есть где развернуться

D>>Cache

G>? зачем? оперативка приложения.

Сори Distributed Cache

D>>Sql Server в те времена был слишком платным, а развернуть MMQ был еще тот квест (по слухам).

G>Что это такое?

Microsoft Message Queue, что-то я много наопечатывался.
Re: Зачем нужен Redis?
От: elmal  
Дата: 10.01.19 06:59
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги,

G>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.
Тем, что Sql Server он вообще то платный. Особенно в кластерной конфигурации. С этим платным софтом и лицензиями геморроя как то многовато.
Re[2]: GarryIV, я расцениваю это как успех
От: GarryIV  
Дата: 10.01.19 07:00
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>GarryIV моментально влепил минус. Без аргументов, без ответа. Это успех. В священных войнах это успех.

G>Вполне возможно, что одним только своим вопросом я отправил опонента в больницу. Он успел только поставить минус и схватился за сердце... "Ааа.... мой редис, редис... сердце!" И упал со стула.
G>Успех! Хорошо! Как же я силен в этих самых войнах священных.

Уныло потому что. Перетирать одно и то же в надцатый раз. Хоть тебя минусом порадовал, и то хорошо.
WBR, Igor Evgrafov
Re: П-значит "Производительность"
От: Джо  
Дата: 10.01.19 07:46
Оценка: +2

Redis is faster than SQL Server for a key/value cache store. About 15x faster for reads and 19x faster for writes according to my tests on a single machine (no clustering or other multi-machine setup).

https://www.brianpeyton.com/sqlserver/redis/2018/04/23/sql-server-in-memory-vs-redis.html
Re[4]: Зачем нужен Redis?
От: hlt Россия  
Дата: 10.01.19 08:37
Оценка:
САД>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.
А кто мешает класть в сиквел денормализованные данные?
Re[2]: П-значит "Производительность"
От: Gt_  
Дата: 10.01.19 08:38
Оценка:
Джо>

Джо>Redis is faster than SQL Server for a key/value cache store. About 15x faster for reads and 19x faster for writes according to my tests on a single machine (no clustering or other multi-machine setup).

Джо>https://www.brianpeyton.com/sqlserver/redis/2018/04/23/sql-server-in-memory-vs-redis.html

чудик наркоман

TRANSACTION ISOLATION LEVEL = SNAPSHOT

что бы получить 14к инсертов в секунду надо еще добиться парсинга на каждый инсерт.
mysql на i7 7700k выдает порядка 120к полноценных tpc-c транзакий, с полноценной писаниной в лог.
https://tpucdn.com/reviews/Intel/Core_i5_8600/images/mysql.png

примитивные инсерты даже mysql гарантированно далеко за 300к транзакций вытянет
Re[5]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 10.01.19 08:51
Оценка:
САД>>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.
hlt>А кто мешает класть в сиквел денормализованные данные?

таблица с 100500 колонок?
а потом делать хитрые маппинги плоских сущностей на иэрархию объектов?
но зачем? если можно положить и достать as is
Нет времени на раскачку!
Re[5]: Зачем нужен Redis?
От: neFormal Россия  
Дата: 10.01.19 09:09
Оценка: 1 (1) :)
Здравствуйте, Gattaka, Вы писали:

AB>>Тут, вероятно, имелся ввиду distributed cache. Но даже в рамках одного хоста далеко не всегда есть возможность или целесообразность делать кэш в памяти приложения (например для prefork модели или микросервисов).

G>Вот зачем давать такие многозначительные ответы, чтобы люди потом гадали что имелось в виду? Да чтобы казаться умнее. Потому как если много скажешь — сразу станет понятно, что аргументов то и нет.

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

G>И чем же он так хорош как ditributed cache? Как у него с отказоустойчивостью. Если значение попало на одну ноду редиса, то как скоро оно доберется до другой ноды?

G>В обще зачем нужен distributed cache? Можно конкретный пример?

это как реплики БД. зачем реплики БД? чтобы снизить нагрузку
...coding for chaos...
Re[2]: GarryIV, я расцениваю это как успех
От: Max Mustermann  
Дата: 10.01.19 09:51
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>GarryIV моментально влепил минус. Без аргументов, без ответа. Это успех. В священных войнах это успех.


Я тоже. Просто потому, что вопрос оставляет стойкое послевкусие "is it troll or just very stupid".
Т.е. я понимаю, что подфорум специфический, но в такой формулировке это успех даже для СВ.
Re[6]: Зачем нужен Redis?
От: Ops Россия  
Дата: 10.01.19 12:59
Оценка: +2
Здравствуйте, СвободуАнжелеДевис, Вы писали:

B>>Вот тут чуваки выкинули Монго, взяли Постгрис и хранят там JSON

B>>https://www.theguardian.com/info/2018/nov/30/bye-bye-mongo-hello-postgres

САД>как key-value любая база работает быстро.

САД>но я думаю что основной посыл автора был в другом.

JSON в постгре — это не просто текст, по нему вполне можно запросы делать. Так что это не просто key-value
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[6]: Зачем нужен Redis?
От: hlt Россия  
Дата: 10.01.19 13:10
Оценка:
САД>таблица с 100500 колонок?
САД>а потом делать хитрые маппинги плоских сущностей на иэрархию объектов?
САД>но зачем? если можно положить и достать as is
Что такое "as is" в данном случае?
Re: Зачем нужен Redis?
От: IncremenTop  
Дата: 10.01.19 13:29
Оценка: +1
Здравствуйте, Gattaka, Вы писали:

G>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.


Любой, где необходимо хранить пару ключ-значение и нужна скорость.

Даже если скорость не нужна, то он будет просто удобнее.
Re[7]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 10.01.19 13:33
Оценка:
САД>>таблица с 100500 колонок?
САД>>а потом делать хитрые маппинги плоских сущностей на иэрархию объектов?
САД>>но зачем? если можно положить и достать as is
hlt>Что такое "as is" в данном случае?

в каком виде документ положили — в таком и достали.
это очень удобно.
Нет времени на раскачку!
Re[7]: Зачем нужен Redis?
От: СвободуАнжелеДевис СССР  
Дата: 10.01.19 13:34
Оценка:
Ops>JSON в постгре — это не просто текст, по нему вполне можно запросы делать. Так что это не просто key-value

можно, я в курсе.
но обычно этого не требуется.
впрочем, такое сейчас и сиквел поддерживает.
но нужно сравнивать перфоманс с специализированными решениями, как тот же монго.
Нет времени на раскачку!
Re[8]: Зачем нужен Redis?
От: hlt Россия  
Дата: 10.01.19 14:00
Оценка:
САД>>>таблица с 100500 колонок?
САД>>>а потом делать хитрые маппинги плоских сущностей на иэрархию объектов?
САД>>>но зачем? если можно положить и достать as is
hlt>>Что такое "as is" в данном случае?
САД>в каком виде документ положили — в таком и достали.
САД>это очень удобно.

Что это за вид такой, в котором в Redis можно положить, а в sql нельзя?
Отредактировано 10.01.2019 14:02 hlt . Предыдущая версия .
Re[8]: Зачем нужен Redis?
От: Ops Россия  
Дата: 10.01.19 14:34
Оценка:
Здравствуйте, СвободуАнжелеДевис, Вы писали:

САД>можно, я в курсе.

САД>но обычно этого не требуется.
Когда не требуется — тогда и монга не нужна.
САД>впрочем, такое сейчас и сиквел поддерживает.
САД>но нужно сравнивать перфоманс с специализированными решениями, как тот же монго.
По крайней мере индексы по полям json можно строить. А так — конечно, надо сравнивать.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: П-значит "Производительность"
От: Ops Россия  
Дата: 10.01.19 15:00
Оценка:
Здравствуйте, Gt_, Вы писали:

Gt_>примитивные инсерты даже mysql гарантированно далеко за 300к транзакций вытянет


Так ты и привел картинку по mysql
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: П-значит "Производительность"
От: Gattaka Россия  
Дата: 10.01.19 18:52
Оценка:
Здравствуйте, Джо, Вы писали:

Джо>

Джо>Redis is faster than SQL Server for a key/value cache store. About 15x faster for reads and 19x faster for writes according to my tests on a single machine (no clustering or other multi-machine setup).

Джо>https://www.brianpeyton.com/sqlserver/redis/2018/04/23/sql-server-in-memory-vs-redis.html


varchar(max)

Re[5]: Зачем нужен Redis?
От: 129912 Марс  
Дата: 10.01.19 19:11
Оценка:
G>В обще зачем нужен distributed cache? Можно конкретный пример?

Хранение сессий, просмотров, лайков и т.п. миллиона юзеров и миллиарда статей/видосиков, распределенных по десятку региональных зеркал.
Re[5]: Зачем нужен Redis?
От: Anton Batenev Россия https://github.com/abbat
Дата: 10.01.19 19:35
Оценка:
Здравствуйте, Gattaka, Вы писали:

G> И чем же он так хорош как ditributed cache?

G> Как у него с отказоустойчивостью.
G> Если значение попало на одну ноду редиса, то как скоро оно доберется до другой ноды?
G> В обще зачем нужен distributed cache? Можно конкретный пример?

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

P.S. "В КСВ к звёздам надо приходить подготовленными, а не так как вы: вчера — у подворотни, а сегодня — здесь, на втором ряду..."
Бэкапимся на Яндекс.Диск
Re[6]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 10.01.19 21:32
Оценка: :)
Здравствуйте, Anton Batenev, Вы писали:

AB>Боюсь, что на объяснение базовых практик распределенных систем и цитирование документации по redis я потрачу сильно много времени впустую.

AB>P.S. "В КСВ к звёздам надо приходить подготовленными, а не так как вы: вчера — у подворотни, а сегодня — здесь, на втором ряду..."

За этим высокомерным надменным пафосом скрывается банальное невежество. Проблема в том, сударь, что вы даже не сможете объяснить при всем желании. Потому что сами не знаете. При этом боитесь себе в этом признаться. Типичная история, вас много таких. И именно вы вкручиваете свой медленный редис куда не попадя. Карго культ не более.
Re[3]: П-значит "Производительность"
От: Джо  
Дата: 11.01.19 01:53
Оценка:
G>varchar(max)

А какой тип лучше подошел бы? Выглядит как аналог типа данных Redis:

Strings are the most basic kind of Redis value. Redis Strings are binary safe, this means that a Redis string can contain any kind of data, for instance a JPEG image or a serialized Ruby object.

A String value can be at max 512 Megabytes in length.


Т.е. значение получаемое по ключу, это произвольная строка переменной длины.
Re[3]: П-значит "Производительность"
От: Джо  
Дата: 11.01.19 01:59
Оценка:
Gt_>чудик наркоман
Gt_>TRANSACTION ISOLATION LEVEL = SNAPSHOT

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

И кстати это может быть ответом на вопрос зачем Redis, из-за специализации там меньше ненужных настроек где можно ошибиться.
Re[4]: П-значит "Производительность"
От: Gattaka Россия  
Дата: 11.01.19 05:59
Оценка:
Здравствуйте, Джо, Вы писали:

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


Инструмент для тупых?
Re[4]: П-значит "Производительность"
От: Gattaka Россия  
Дата: 11.01.19 06:01
Оценка:
Здравствуйте, Джо, Вы писали:

G>>varchar(max)


Джо>А какой тип лучше подошел бы? Выглядит как аналог типа данных Redis:

Джо>

Джо>Strings are the most basic kind of Redis value. Redis Strings are binary safe, this means that a Redis string can contain any kind of data, for instance a JPEG image or a serialized Ruby object.

Джо>A String value can be at max 512 Megabytes in length.


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


Нифига не ангалог. В SQL Server в нем можно хранить до 2 Гб. Просьба обеспечить аналогичным типом из Redis. Чувак в тесте пихает в трочку guid.tostring() явно varchar(max) избыточно.
Re[5]: П-значит "Производительность"
От: Джо  
Дата: 11.01.19 07:41
Оценка:
Джо>>Т.е. значение получаемое по ключу, это произвольная строка переменной длины.
G>Нифига не ангалог. В SQL Server в нем можно хранить до 2 Гб. Просьба обеспечить аналогичным типом из Redis. Чувак в тесте пихает в трочку guid.tostring() явно varchar(max) избыточно.

512Mb vs 2Gb — это примерно одно и тоже. Я смотрю на эксперимент как ответ на вопрос "можно ли создать сервис Redis на базе MS SQL In-memory OLTP". Функционал redis в том что ты можем положить по ключу строку от 0 до 512Mb, какой тип SQL Server для этого подойдет лучше чем varchar(max)? То что фактически он работает со строками длиной в GUID, это детали теста. То что SQL Server не может предоставить аналогичный функционал без деградации производительности говорит о его недостатках когда его заставляют работать как замену Redis.
Re[5]: Зачем нужен Redis?
От: Джо  
Дата: 11.01.19 08:02
Оценка: +2
G>Распространенные базы данных позволяют тебе не думать об алгоритмах. Ты говоришь что тебе нужно, а они уже сами подбирают алгоритм. И уже сами решают как это сделать.

До первой проблемы. В реальном проде надо знать и алгоритмы, как работают блокировки, как устроены уровни изоляции, итд.
Re[7]: Зачем нужен Redis?
От: neFormal Россия  
Дата: 11.01.19 08:06
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>За этим высокомерным надменным пафосом скрывается банальное невежество. Проблема в том, сударь, что вы даже не сможете объяснить при всем желании. Потому что сами не знаете. При этом боитесь себе в этом признаться. Типичная история, вас много таких. И именно вы вкручиваете свой медленный редис куда не попадя. Карго культ не более.


ты просто недостоин этой чести.
...coding for chaos...
Re[8]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 11.01.19 17:58
Оценка:
Здравствуйте, neFormal, Вы писали:

F>Здравствуйте, Gattaka, Вы писали:


G>>За этим высокомерным надменным пафосом скрывается банальное невежество. Проблема в том, сударь, что вы даже не сможете объяснить при всем желании. Потому что сами не знаете. При этом боитесь себе в этом признаться. Типичная история, вас много таких. И именно вы вкручиваете свой медленный редис куда не попадя. Карго культ не более.


F>ты просто недостоин этой чести.


сам ты не достоин
Re[6]: П-значит "Производительность"
От: Gattaka Россия  
Дата: 11.01.19 18:00
Оценка:
Здравствуйте, Джо, Вы писали:

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

G>>Нифига не ангалог. В SQL Server в нем можно хранить до 2 Гб. Просьба обеспечить аналогичным типом из Redis. Чувак в тесте пихает в трочку guid.tostring() явно varchar(max) избыточно.

Джо>512Mb vs 2Gb — это примерно одно и тоже. Я смотрю на эксперимент как ответ на вопрос "можно ли создать сервис Redis на базе MS SQL In-memory OLTP". Функционал redis в том что ты можем положить по ключу строку от 0 до 512Mb, какой тип SQL Server для этого подойдет лучше чем varchar(max)? То что фактически он работает со строками длиной в GUID, это детали теста. То что SQL Server не может предоставить аналогичный функционал без деградации производительности говорит о его недостатках когда его заставляют работать как замену Redis.


А можно ли в редис положить строчку оптимальным образом не более 200 символов, как это можно в Sql Server?
Re[9]: Зачем нужен Redis?
От: neFormal Россия  
Дата: 11.01.19 20:23
Оценка:
Здравствуйте, Gattaka, Вы писали:

F>>ты просто недостоин этой чести.

G>сам ты не достоин

нет ты
...coding for chaos...
Re[10]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 11.01.19 21:16
Оценка: +1 :)
Здравствуйте, neFormal, Вы писали:

F>нет ты


ты не достоин. хватит спорить! мне виднее, я старше.
Re[5]: П-значит "Производительность"
От: Farsight СССР  
Дата: 11.01.19 22:03
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Инструмент для тупых?


Ага, не сочтем за троллинг .
</farsight>
Re[4]: П-значит "Производительность"
От: Gt_  
Дата: 12.01.19 07:51
Оценка:
Здравствуйте, Джо, Вы писали:

Gt_>>чудик наркоман

Gt_>>TRANSACTION ISOLATION LEVEL = SNAPSHOT

Джо>На чтение это же не должно влиять, почему операции чтения медленнее? Кроме того, Redis обеспечивает именно такой уровень изоляции по сути, по скольку он однопоточный.


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



как видим ошибся. врятли редис мог бы проиграть mysql в трезвых руках
Re: Зачем нужен Redis?
От: Ночной Смотрящий Россия  
Дата: 13.01.19 12:51
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги,

G>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server.

Латентностью. Отличие примерно на порядок.

G>Итак вопрос, назовите use-case где Redis необходим.


Распределенный кеш кластера, средство синхронизации кластера (кластерные локи, прогресс и т.п.)
Re[5]: Зачем нужен Redis?
От: Ночной Смотрящий Россия  
Дата: 13.01.19 12:58
Оценка:
Здравствуйте, Gattaka, Вы писали:

САД>>но в целом, в редис кладут денормализованные данные, и вытащить сущность по ключу значительно быстрее чем из сиквела с кучей джойнов.

G>Так сделайте materialized view.

У него очень много ограничений.
Re[9]: Зачем нужен Redis?
От: Ночной Смотрящий Россия  
Дата: 13.01.19 12:58
Оценка:
Здравствуйте, Gattaka, Вы писали:

САД>>и для распределенных систем он тоже не всегда под все кейсы подходит напрямую.

G>По моим замерам скорость чтения в Sql Server выше, чем в redis.

Ну так код замеров и результат в студию.

G>Ведь Sql Server хранит также свои данные в buffer pool. Т.е. в оперативной памяти.


buffer pool такая штука — случайно залетевший тяжелый запрос может оттуда твой кеш выгнать.
Re[6]: Зачем нужен Redis?
От: Ночной Смотрящий Россия  
Дата: 13.01.19 12:58
Оценка: +1
Здравствуйте, СвободуАнжелеДевис, Вы писали:

САД>таблица с 100500 колонок?


Зачем? В редисе ж никаких колонок нет.
Проблема в сиквеле не в том, что он чего то не может, а в том что при сходной латентности сиквел будет в разы, а то и на порядок дороже.
Re[4]: Зачем нужен Redis?
От: Ночной Смотрящий Россия  
Дата: 13.01.19 13:01
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Microsoft Message Queue, что-то я много наопечатывался.


MSMQ. Давно утухло. Сейчас Service Bus и Storage Queue. Первый унутре mssql, так что те же яйца, вид в профиль.
Re[2]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 13.01.19 17:00
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Gattaka, Вы писали:


G>>Коллеги,

G>>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server.

НС>Латентностью. Отличие примерно на порядок.


G>>Итак вопрос, назовите use-case где Redis необходим.


НС>Распределенный кеш кластера, средство синхронизации кластера (кластерные локи, прогресс и т.п.)


А можешь пример конкретные придумать?
Re[3]: Зачем нужен Redis?
От: Ночной Смотрящий Россия  
Дата: 14.01.19 06:59
Оценка:
Здравствуйте, Gattaka, Вы писали:

НС>>Распределенный кеш кластера, средство синхронизации кластера (кластерные локи, прогресс и т.п.)

G>А можешь пример конкретные придумать?

Не очень понятен вопрос. Примеры чего?
Re[4]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 14.01.19 17:52
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Gattaka, Вы писали:


НС>>>Распределенный кеш кластера, средство синхронизации кластера (кластерные локи, прогресс и т.п.)

G>>А можешь пример конкретные придумать?

НС>Не очень понятен вопрос. Примеры чего?


Пример использования распределенного кеша кластера, средства синхронизации кластера (кластерных локов, прогресса и т.п.)
Re[5]: Зачем нужен Redis?
От: Ночной Смотрящий Россия  
Дата: 14.01.19 18:40
Оценка: 1 (1)
Здравствуйте, Gattaka, Вы писали:

НС>>Не очень понятен вопрос. Примеры чего?

G>Пример использования распределенного кеша кластера, средства синхронизации кластера (кластерных локов, прогресса и т.п.)

Типичный пример кеша — при каждом обращении нужен, к примеру, профиль пользователя. Профиль лежит в БД, выборка — сотни мс. Если каждый раз лазать за ним — сервер БД быстро кончится. Поэтому профиль нужно кешировать. В standalone обычно хранят в памяти сервера, но с кластером такой вариант не прокатывает. Поэтому заменяют на распределенный кеш — тоже в памяти, но общий для всего кластера.
С кластерными локами вроде все понятно, не? Иногда нужно обеспечить, чтобы какой то кусочек кода выполнялся в один момент времени строго один раз. Можно, конечно, мутить с DTC, но иногда достаточно несложного решения на баже Редиса.
С прогрессом еще проще. Пусть есть некий асинхронный процесс. А в UI нужно отобразить его состояние. При этом машина, на которой идет процесс, и машина, к которой пришел реквест пользователя могут быть разными. Можно, конечно, через сиквел передавать, но его такими вещами очень просто перегрузить, так как запросов потенциально может быть очень много, хоть и простых. Редис с такими задачами справляется не в пример эффективнее и дешевле.
Re[3]: Зачем нужен Redis?
От: Ziaw Россия  
Дата: 24.01.19 08:21
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>А если редис упал? Потеряем те 13 минут что остались у пользователя? Или как?


Если упал, поднимай, в чем проблема?

G>Такой вариант — заводим в постресе табличку с временем, есть джоба которая раз в 30 сек выгребает оттуда просроченных. Вуаля — все надежно и транзакционно.


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


Еще в редис можно сложить и анализировать потом всякую не сильно критичную к утере, но важную для бизнеса информацию — статистику просмотров, лайки, букмарки. Потом искать по ним что-то типа "вам может быть интересно", не терзая основную БД, с помощью его операций со множествами.
Re[5]: П-значит "Производительность"
От: Крякозавр  
Дата: 24.01.19 12:56
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Здравствуйте, Джо, Вы писали:


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


G>Инструмент для тупых?


Чтобы отрезать кусок хлеба вы берёте простой кухонный нож или же швейцарский?
Re: Зачем нужен Redis?
От: Крякозавр  
Дата: 24.01.19 13:04
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги,

G>Не сочтите за троллинг. Реально не особо понятно чем он луче просто Sql Server. Мне думается, что те аргументы что вы приведете в пользу Redis я смогу опровергнуть опять же аргументированно. Давайте попробуем?
G>Итак вопрос, назовите use-case где Redis необходим. Давайте наберем несколько таких Use Cases.


С какой стати это мы должны что-либо аргументировать и придумывать юзкейсы, которые смогут убедить тебя?
Давай пойдём от обратного. Скажем, тебе нужно _хранить_ самые обычные структуры данных: списки, множества, сортируемые множества, хештаблицы, счётчики.
Обоснуй, почему реляционная модель для этого подходит лучше. Как по мне, так это извращение.
Re[2]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 24.01.19 20:35
Оценка: -1
Здравствуйте, Крякозавр, Вы писали:


К>С какой стати это мы должны что-либо аргументировать и придумывать юзкейсы, которые смогут убедить тебя?

К>Давай пойдём от обратного. Скажем, тебе нужно _хранить_ самые обычные структуры данных: списки, множества, сортируемые множества, хештаблицы, счётчики.
К>Обоснуй, почему реляционная модель для этого подходит лучше. Как по мне, так это извращение.
Сам обоснуй!
Re[6]: П-значит "Производительность"
От: Gattaka Россия  
Дата: 24.01.19 20:36
Оценка:
Здравствуйте, Крякозавр, Вы писали:

К>Здравствуйте, Gattaka, Вы писали:


G>>Здравствуйте, Джо, Вы писали:


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


G>>Инструмент для тупых?


К>Чтобы отрезать кусок хлеба вы берёте простой кухонный нож или же швейцарский?


Все делаю одним кухонным ножом. Швейцарский нож не нужен. Фигня. На помойку.
Re[11]: Зачем нужен Redis?
От: Vetal_ca Канада http://vetal.ca
Дата: 24.01.19 20:43
Оценка:
Здравствуйте, Gattaka, Вы писали:


G>И так ясно, оперативка дорогая. Веб ноды будут золотыми буквально. Врят ли они будут утилизировать всегда всю память. Это успех. Плюс. В докере должен быть только один процесс. Так что опять успех!


Это не так.

Lifetime контейнера определяется временем жизни основного pid 0 процесса, который может запускать произвольное количество child процессов. См supervisord, s6 daemon и т.п.
Re[12]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 26.01.19 02:38
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

V_>Это не так.


V_>Lifetime контейнера определяется временем жизни основного pid 0 процесса, который может запускать произвольное количество child процессов. См supervisord, s6 daemon и т.п.


Нет, это имеенно так.
Вот здесь объясняется почему так нужно делать: https://devops.stackexchange.com/questions/447/why-it-is-recommended-to-run-only-one-process-in-a-container
Re[13]: Зачем нужен Redis?
От: Vetal_ca Канада http://vetal.ca
Дата: 26.01.19 02:44
Оценка:
Здравствуйте, Gattaka, Вы писали:


G>Нет, это имеенно так.

G>Вот здесь объясняется почему так нужно делать: https://devops.stackexchange.com/questions/447/why-it-is-recommended-to-run-only-one-process-in-a-container

Я знаю, но ключевое слово — рекомендуется. А не "должен быть".

И есть случаи, когда это оправдано
Re[14]: Зачем нужен Redis?
От: Gattaka Россия  
Дата: 27.01.19 11:22
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

V_>Здравствуйте, Gattaka, Вы писали:



G>>Нет, это имеенно так.

G>>Вот здесь объясняется почему так нужно делать: https://devops.stackexchange.com/questions/447/why-it-is-recommended-to-run-only-one-process-in-a-container

V_>Я знаю, но ключевое слово — рекомендуется. А не "должен быть".


V_>И есть случаи, когда это оправдано


"Должен быть" это и есть "рекомендуется". В русском языке.
Re[15]: Зачем нужен Redis?
От: Vetal_ca Канада http://vetal.ca
Дата: 27.01.19 12:37
Оценка:
Здравствуйте, Gattaka, Вы писали:

V_>>И есть случаи, когда это оправдано


G>"Должен быть" это и есть "рекомендуется". В русском языке.


На собеседовании на DevOpс таким ответом однозначно пролетишь, что на русском, что на английском (recommended против must be).

Потому что это неправильно, без вариантов.

На филолога, может быть. Не стану судить, не филолог.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.