Sobes.tech
Back to questions
Junior — Middle
60

Использовал ли ты механизмы блокировки в Redis для синхронизации данных?

Answer from AI

sobes.tech AI

Да, в Redis можно реализовать механизмы блокировки для синхронизации данных, например, используя команду SET с параметрами NX (установить ключ, если его нет) и PX (время жизни). Это позволяет создать простой распределённый лок:

import redis
import time

r = redis.Redis()

lock_key = "resource_lock"
lock_timeout = 5000  # миллисекунды

# Попытка установить блокировку
if r.set(lock_key, "locked", nx=True, px=lock_timeout):
    try:
        # Критическая секция
        print("Lock acquired, working...")
        time.sleep(2)  # имитация работы
    finally:
        r.delete(lock_key)  # освобождение блокировки
else:
    print("Could not acquire lock")

Для более сложных сценариев используют алгоритм Redlock, обеспечивающий надёжную распределённую блокировку.