Использование понижающей дискретизации RedisTimeSeries для агрегирования данных
Я хочу использовать таймсерии redis для хранения количества элементов. т.е. мониторинг многих компаний, и у компании A есть учетная запись, в которую они добавили сотрудников ... Когда сотрудник добавляет элемент, я хочу обновить его счетчик за сегодня, эту неделю и этот месяц, а также увеличить количество элементов учетной записи компании A сегодня, на этой неделе и в этом месяц. Является ли RedisTimeSeries лучшей технологией и как с ее помощью можно контролировать несколько компаний и их сотрудников?
1 ответ
Если вам не нужна история элементов с течением времени, один из вариантов - просто использовать счетчики (целые числа, строки Redis) либо в блоке multi exec, либо в сценарии Lua.
Я пометил название компании (A), чтобы все ключи находились в одном сегменте. 123 обозначает идентификатор сотрудника
MULTI
SADD {A}:123:items newItem
INCR {A}:123:total
INCR {A}:123:2021
INCR {A}:123:2021:month:07
INCR {A}:123:2021:week:32
EXEC
В качестве альтернативы вы можете сохранить все подсчеты для каждого пользователя в одном хэше и использовать HINCRBY
Любое решение может потребовать некоторой очистки для более длительных периодов работы.