@Virtus_pro
PHP программист

Хранение таблицы активных заказов в редис?

Здравствуйте.

Есть заказы, которые активны в течении 30 минут до 4 часов.
В базе на сегодня уже 500 000 заказов.
К серверу напрямую обращается 1000 запросов в минуту
В основном запрос это, есть для меня новые заказы ?
В онлайне всегда находится примерно 300-500 заказов
Использую Laravel

Сейчас все запросы идут напрямую в Mysql, но по сути зачем базу грузить такими частыми запросами? Вот хочу использовать для этого Redis.
В общем он отлично справляется с таким потоком, но я в основном пользуюсь им как ключ=> Значение.
В Redis еще есть другие типы данных, вот собственно хотелось узнать, как можно делать некий список из 300 строчек с уникальными ключами.
т.е даже если взять элементарно, можно было бы просто в один ключ orders Загонять массив всех активных заказов и все прекрасно, но встает вопрос, чтобы удалить 1 заказ из массива, надо весь его перебрать и записать обратно новый массив без этого заказа. Так же и с добавлением.
Возможно ли просто добавлять в массив 1 командой и удалять так же по ключу, плюс получать весь список при необходимости целиком. Так же будет плюсом, выборкой по критериями
  • Вопрос задан
  • 1286 просмотров
Пригласить эксперта
Ответы на вопрос 4
XAKEPEHOK
@XAKEPEHOK
А вот у нас недавно редис взял и похерил добрую половину ключей. Просто взял ночью и похерил. Рандомно разные ключи. У нас такое впервые за 5 лет работы. Бэкап - да, есть, но это уже потеря консистентности. После этого случая я зарубил себе на носу, что храню там только те данные, которые допустимо потерять или можно восстановить без особых потерь
Ответ написан
Denormalization
@Denormalization
В Redis существуют команды HSET/HGET/HDEL.
Они прекрасно подойдут для этой задачи.
Есть возможность "добавлять в массив 1 командой и удалять так же по ключу, плюс получать весь список при необходимости целиком".

  • HSET - установит нужное значение в списке
  • HGET - вернет нужное значение из списка
  • HDEL - удалит нужное значение из списка
  • HGETALL - вернет все значения в списке
Ответ написан
Комментировать
@Kekoc
Если в базу запросы по ключу то такое кол-во ее не особо грузит. Но с рэдисом тоже норм идея, но не крутой выигрышь в производительности.
Ответ написан
@iStorm
Если построить покрывающие индексы в MySQL, будет работать примерно так же как редис по скорости, а надёжность будет выше.
И зачем вы храните старые, если они больше не используются?
Выгружайте в архив и идеи с редисом отпадут )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы