2023-06-04 22:54:54 +08:00

51 lines
1.1 KiB
Go

package redis
import (
"context"
"time"
)
// Get 获取
func Get(key string) (string, error) {
return client.Get(context.Background(), key).Result()
}
// Set 设置
func Set(key string, value string, duration time.Duration) error {
_, err := client.Set(context.Background(), key, value, duration).Result()
return err
}
// Has 判断key是否存在
func Has(key string) (bool, error) {
c, err := client.Exists(context.TODO(), key).Result()
return c > 0, err
}
// Remove 删除缓存
func Remove(key string) error {
return client.Del(context.Background(), key).Err()
}
// BaseLock 基础分布式锁
func BaseLock(key string, value string, duration time.Duration) bool {
result := client.SetNX(context.Background(), key, value, duration)
return result.Val()
}
// Lock 分布式执行函数
func Lock(key string, duration time.Duration, handle func()) {
result := client.SetNX(context.Background(), key, "0", duration)
if result.Val() {
//defer func() {
// err := Remove(key)
// if err != nil {
// fmt.Println("Lock_remove_err ", err)
// }
//}()
handle()
}
}