Есть таблица, допустим Emails, которая хранит email адреса.
В интерфейсе сайта есть форма в которой указывается "интервал" для каждого email адреса в crontime формате.:
Примерemail | timeline
admin@example.ru | */5 * * * *
*/5 * * * * - указывает на то что данная запись в базе должна находится каждый раз, когда текущее время/минуты кратны 5
Вопрос: как хранить данный интервал, с учетом того что воркер, по крону, каждую минуту, должен максимально быстро находить задачи которые необходимо выполнить в данную минуту? Как Вам подход который используется сейчас?
Если есть другие варианты реализации то с удовольствием выслушаю.
P.S. Как работает на текущий моментХраню в базе интервал в crontime формате, за исключение того что записи в духе */5 конвертирую в 5,10,15....
Далее Postgres, запрос по регулярке (timeline ~* regxp):
- Время: Mon, 19 Jun 2017 13:15:37
- Регулярка: ^([\d,]*15[\d,]*|\*|15) ([\d,]*13[\d,]*|\*|13) ([\d,]*19[\d,]*|\*|19) ([\d,]*6[\d,]*|\*|6) ([\d,]*1[\d,]*|\*|1)$
Находит, отнасительно шустро, но мне сам подход не очень нравится