Files
Sipro-Marketplaces/internal/redis/lock.go
2025-09-28 20:19:45 +03:00

30 lines
601 B
Go

package redis
import (
"context"
"os"
"github.com/redis/rueidis"
"github.com/redis/rueidis/rueidislock"
"go.uber.org/fx"
)
func NewRedisLocker(lc fx.Lifecycle) (rueidislock.Locker, error) {
redisAddr := os.Getenv("REDIS_ADDR")
password := os.Getenv("REDIS_PASSWORD")
locker, err := rueidislock.NewLocker(rueidislock.LockerOption{
ClientOption: rueidis.ClientOption{InitAddress: []string{redisAddr}, Password: password},
})
if err != nil {
return nil, err
}
lc.Append(fx.Hook{
OnStop: func(_ context.Context) error {
locker.Close()
return nil
},
})
return locker, nil
}