У меня есть коллекция Providers
.У каждого провайдера может быть несколько Orders
.
. Мне нужно сохранить в redis идентификаторы заказа, относящиеся к каждому провайдеру в массиве json.
Одним из возможных решений является использование HSET.
HSET provider_orders providerId:1 "['1234']"
или в javascript:
ioredis.hset(
'provider_orders',
`providerId:1`,
['1234'],
)
Где 1
- идентификатор провайдера, а '1234'
- идентификатор_идентификации
Однако, если мне нужно добавить новый заказ втот же поставщик мне нужно было бы получить массив идентификаторов текущего заказа и добавить новый идентификатор заказа.
Примерно так:
const currentOrders = ioredis.hget(
'provider_orders',
`providerId:${deliverer.id}`
)
currentOrders.push(newOrder)
ioredis.hset(
'provider_orders',
`providerId:${deliverer.id}`,
currentOrders,
)
Это лучший способ сделать что-то подобное?
Другой вариант, который я рассмотрел, - это создание новых ключей для каждого провайдера и использование SADD.
SADD provider:order:1 "1234"
Где 1
- это идентификатор провайдера, а '1234'
- это порядковый номер
Однако это создаст много ключей.Один на каждого провайдера.