Есть приложение на ROR, возникла такая задача: нужно отправлять уведомления на клиента (мобильное приложение) и ждать подтверждения, если подтверждения не было в течение 5 секунд уведомление повторить. С отправкой проблем нет - все работает. Хранить уведомление до подтверждения решено в Redis, а когда клиента пришлет подтверждение удалять их из очереди на повторную отправку. Все загвоздка как хранить в Redis. В чем проблема: для определения необходимости повторной отправки каждую секунду запускается фоновая задача, и если у уведомления поле sec совпадает с Time.now.sec % 5, то ее нужно отправить. Таким образом, для отправки нужна выборка по полю sec, а когда клиент присылает подтверждение надо найти по типу уведомления и пользователю (user_id). Вывод: получается нужны два разных ключа! Набросал вариант с полным перебором и восстановлением данные в хеш - но это очень медленно. Есть еще вариант просто матчить по строкe без JSON.parse - должно быть быстрей, но тоже кажется не очень правильно.
Может у Redis есть какие-то варианты для подобных случаев? Или проблема в самом решение?
разработчики Tarantool, аналога, говорят, что да, если есть хорошая хранилка в памяти с умением исполнять код внутри, то можно обойтись и без MQ. У них и скриптик есть, работающий внутри сервера кеширования Tarantool.