Я нахожусь в точке, где я мог бы хранить ресурс в Redis как ha sh или Re JSON. Мои конкретные данные в этом случае - это временные данные объекты , состоящие из нескольких строковых и числовых c полей каждое. Пользователь вызовет процесс, который создает такую структуру, как:
{
'item_id': 'k0f8h3n5m6n1w9d0k0k1m1n4b6c8f8r7'
'amount': 3.00042
'timestamp': 1590440708,
'user1_status': 'pending',
'user_2_status': 'completed'
}
Это фактически очередь, обрабатываемая клиентом-пользователем (постановка в очередь обрабатывается отдельным потоком Redis ), в котором каждый объект останется используемым (как объект ha sh или re json) в среднем около 1 часа. В любой момент времени в очереди будут десятки тысяч этих объектов . Находясь в очереди, поля объекта (например, user1_status
и user2_status
) будут обновляться несколько раз.
После того, как каждый объект будет обработан, я мог либо оставить его в Redis или переместите каждый объект в базу данных холодного хранения для ведения журнала и удаления из Redis. Я не уверен, что мне следует это сделать или просто оставить.
Какой тип данных Redis (Ha sh или Re JSON) больше подходит для моей задачи? Каковы некоторые общие соображения при выборе между этими двумя типами?
Примечание: Я понимаю, что если я хочу сделать что-то вроде этого:
{
'item_id': 'k0f8h3n5m6n1w9d0k0k1m1n4b6c8f8r7'
'amount': 3.00042
'timestamp': 1590440708,
'user1_status': 'pending',
'user_2_status': 'completed'
'parent': {
'item1': 1,
'item2': [1, 2, 3, 4]
'item3': {
'one': 1,
'two': 2
}
}
}
Re JSON, вероятно, будет правильным выбором, потому что вам нужно выровнять любой объект перед сохранением его как ha sh. Ради этого вопроса, предположим, что мне не нужно этого делать, поскольку я уже знаю об этом.