Делал ли локи в Redis
Python
Middle
Без компании
Делал ли локи в Redis
Ответы
Да, работал с блокировками в Redis. Чаще всего использовал `SET` с параметрами `NX` (Not eXists) и `PX` (expire time in milliseconds) для реализации distributed lock.
Пример простой блокировки:
```
import redis
r = redis.Redis()
# Попытка захватить блокировку
lock_acquired = r.set("my_lock", "locked", nx=True, px=10000)
if lock_acquired:
try:
# Критическая секция
print("Lock acquired, doing work...")
finally:
# Освобождение блокировки
r.delete("my_lock")
else:
print("Failed to acquire lock")
```
Важные моменты:
- Всегда устанавливайте TTL для блокировки (PX), чтобы избежать deadlock
- Используйте случайное значение вместо "locked" и проверяйте его при удалении для безопасности
- Для более сложных сценариев можно использовать Redlock алгоритм или библиотеки вроде `redlock-py`