Я считаю, что использование Redis - лучший способ сделать то, что мне нужно, но, пожалуйста, исправьте меня, если я ошибаюсь.
Я открываю сокет для обмена и получаю стабильный поток цен на акцииоколо 1 на каждую «торговую пару» в секунду.
У меня есть пользователи, которые установили оповещения в MYSQL для уведомления, когда цена достигнет определенной цены.
Моя первая наивная идея была бысортировать оповещения для торговой пары и, когда я получаю новую цену из сокета, перебирать список оповещений в mysql и уведомлять всех пользователей, которых необходимо уведомить.
Это явно не сработает, поскольку это будет огромная нагрузка для плохого MYSQL.Поэтому моя идея состоит в том, чтобы использовать Redis и хранить предупреждения в Redis.
Хотя я не обладаю достаточным опытом в разработке Redis, и я изо всех сил пытаюсь найти решение.Сначала мне нужен какой-то отсортированный список или хэш, но я могу хранить только 1 часть информации в списке ...
Я считаю, что мне нужно хранить 3 части информации в базе данных:
1) «Торговая пара» (название списка)
2) Цена
3) Идентификатор записи наблюдателя в MYSQL, чтобы я мог уведомить их
Таким образом, я мог бы создать карту для каждого наблюдателя
watcher_(watcherID)
like:
watcher_3
price : 8000
Затем создать набор с идентификаторами наблюдателя, такими как:
3,5,6
и вызывать сортировку по убыванию с помощью «Сортировка по внешнему виду».keys "
Затем каким-то образом зациклите это, используя SCAN и MATCH, пока я не достигну цены, которая меньше или равна текущей цене, и не переместу ее в новую очередь.
Возможно, сортировкадаже не нужно, если я могу просто перебирать наборы, задавая один и тот же вопрос.
Даже простое размышление об этом с помощью Redis - это реальная боль в моем лице, и я даже не уверен, что ухожупро это правильно.
Может кто-нибудь посоветовать мне, если подход абовМы бы сработали, или если есть лучший подход?