删除一个接口

This commit is contained in:
Yun
2023-08-29 09:43:46 +08:00
parent e7e6cf6752
commit 9955204f18
2 changed files with 1 additions and 154 deletions
+1
View File
@@ -37,6 +37,7 @@ func TestMain(m *testing.M) {
func TestRedis(t *testing.T) {
fmt.Println("6666")
t.Log("fffff")
// t.Fail()
// t.Error("ffff")
// Redis.Set(context.Background(), "dddd", "dddd", 0)
-154
View File
@@ -1,154 +0,0 @@
package uniquer
import (
"errors"
"fmt"
"github.com/gomodule/redigo/redis"
)
type uniqueRedisgo struct {
Redis *redis.Pool
}
var exporeSecond int64 = 15
func NewUniqueRedisGo(redis *redis.Pool) *uniqueRedisgo {
return &uniqueRedisgo{redis}
}
func (u *uniqueRedisgo) SetLimit(key, value string) error {
conn := u.Redis.Get()
defer conn.Close()
if err := conn.Err(); err != nil {
fmt.Println("get redis connect fail, err: ", err)
return err
}
response, err := conn.Do("SET", key, value, "NX", "EX", exporeSecond)
// fmt.Println("SetLimit:", response, err)
if err != nil {
fmt.Println("redis setex fail, err: ", err)
return err
}
if response != "OK" {
return errors.New("response not ok")
}
return nil
}
func (u *uniqueRedisgo) DeleteLimit(key, value string) error {
conn := u.Redis.Get()
defer conn.Close()
if err := conn.Err(); err != nil {
fmt.Println("get redis connect fail, err: ", err)
return err
}
_, err := conn.Do("WATCH", key)
if err != nil {
return err
}
defer conn.Do("UNWATCH")
val, err := redis.String(conn.Do("GET", key))
// fmt.Println("DeleteLimit Do:", val, err)
if err != nil {
return err
}
if val != value {
return errors.New("值不一致")
}
// 处理
err = conn.Send("MULTI")
if err != nil {
return err
}
err = conn.Send("DEL", key)
if err != nil {
return err
}
reply, err := conn.Do("EXEC")
// fmt.Printf("DeleteLimit EXEC:%T val:%+v err:%+v\n", reply, reply, err)
if err != nil {
return err
}
if reply == nil {
return errors.New("删除失败")
}
return nil
}
func (u *uniqueRedisgo) RefreshLimit(key, value string) error {
conn := u.Redis.Get()
defer conn.Close()
if err := conn.Err(); err != nil {
fmt.Println("get redis connect fail, err: ", err)
return err
}
_, err := conn.Do("WATCH", key)
if err != nil {
return err
}
defer conn.Do("UNWATCH")
val, err := redis.String(conn.Do("GET", key))
// fmt.Println("RefreshLimit GET:", val, err, value)
if err != nil {
return err
}
if val != value {
return errors.New("值不一致")
}
// time.Sleep(time.Second * 5)
// 处理
err = conn.Send("MULTI")
// fmt.Println("RefreshLimit MULTI:", err)
if err != nil {
return err
}
err = conn.Send("EXPIRE", key, exporeSecond)
// fmt.Println("RefreshLimit EXPIRE:", err)
if err != nil {
return err
}
// 管道
// reply 执行失败将会返回nil 执行成功就是返回的值
reply, err := conn.Do("EXEC")
// fmt.Printf("RefreshLimit EXEC:%T val:%+v err:%+v\n", reply, reply, err)
// i, ok := reply.([]interface{})
// if ok {
// fmt.Printf("reply i %T\n", i[0])
// uu, ok := i[0].([]uint8)
// if ok {
// fmt.Printf("reply %+v\n", string(uu))
// }
// }
if err != nil {
return err
}
if reply == nil {
return errors.New("更新失败")
}
return nil
}