Если наборы малы и вам не нужна убийственная производительность, я бы просто повторил (zrange / zrangebyscore) и суммировал значения на стороне клиента.
Если, с другой стороны, вы говорите о многих тысячах - миллионах предметов, вы всегда можете сохранить набор ссылок с промежуточными итогами для каждого пользователя и увеличивать / уменьшать их по мере отправки подарков.
Таким образом, когда вы делаете ZINCR 123:gifts 1 "3|345"
, вы можете выполнить отдельную команду ZINCR, которая может выглядеть примерно так:
ZINCR received-gifts 1 <user_id>
Затем, чтобы получить количество подарков, полученных для данного пользователя, вам нужно просто запустить ZSCORE:
ZSCORE received-gifts <user_id>