Middle
43
Was fehlt im Redis-Schema? Wie löst man das Problem, die order_id mit der courier_id zu verknüpfen?
Unternehmen wurden gefragt
Ecom
Antwort von AI
sobes.tech KI
В схеме с Redis часто не хватает механизма атомарной привязки order_id к courier_id, чтобы избежать рассинхронизации данных при параллельных операциях.
Проблему можно решить с помощью:
- Использования Redis Transactions (MULTI/EXEC) для атомарного обновления нескольких ключей.
- Применения Lua-скриптов в Redis, которые выполняются атомарно и позволяют проверить и установить связь между order_id и courier_id за одну операцию.
Пример Lua-скрипта для привязки:
local orderKey = KEYS[1]
local courierKey = KEYS[2]
local orderId = ARGV[1]
local courierId = ARGV[2]
if redis.call('exists', orderKey) == 0 then
redis.call('set', orderKey, courierId)
redis.call('set', courierKey, orderId)
return 1
else
return 0
end
Это гарантирует, что привязка создаётся только если её ещё нет, предотвращая коллизии.