# Packages
No description provided by the author
# README
Locker
Usage
package main
import (
"context"
"time"
"github.com/redis/go-redis/v9"
"github.com/go-kratos-ecosystem/components/v2/cache"
redisStore "github.com/go-kratos-ecosystem/components/v2/cache/redis"
redisLocker "github.com/go-kratos-ecosystem/components/v2/locker/redis"
)
func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// ex1: 直接用
locker := redisLocker.NewLocker(client, redisLocker.WithName("lock"), redisLocker.WithTTL(5*time.Minute))
_ = locker.Try(context.Background(), func() {
// do something
})
// ex2: 基于缓存用
repository := cache.NewRepository(
redisStore.New(client, redisStore.Prefix("cache")),
)
_ = repository.Lock("lock", 5*time.Minute).Try(context.Background(), func() {
// do something
})
}