rm redis, use local cache
| | |
| | | package cache |
| | | |
| | | import ( |
| | | "fmt" |
| | | "github.com/astaxie/beego" |
| | | redigo "github.com/gomodule/redigo/redis" |
| | | ) |
| | | |
| | | var pool *redigo.Pool |
| | | |
| | | func init() { |
| | | redisHost := beego.AppConfig.String("redisIp") |
| | | redisPort,_ := beego.AppConfig.Int("redisPort") |
| | | poolSize := 20 |
| | | pool = redigo.NewPool(func() (redigo.Conn, error) { |
| | | c, err := redigo.Dial("tcp", fmt.Sprintf("%s:%d", redisHost, redisPort)) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | return c, nil |
| | | }, poolSize) |
| | | } |
| | | |
| | | func Get() redigo.Conn { |
| | | return pool.Get() |
| | | } |
| | | // |
| | | //import ( |
| | | // "fmt" |
| | | // "github.com/astaxie/beego" |
| | | // redigo "github.com/gomodule/redigo/redis" |
| | | //) |
| | | // |
| | | //var pool *redigo.Pool |
| | | // |
| | | //func init() { |
| | | // redisHost := beego.AppConfig.String("redisIp") |
| | | // redisPort,_ := beego.AppConfig.Int("redisPort") |
| | | // poolSize := 20 |
| | | // pool = redigo.NewPool(func() (redigo.Conn, error) { |
| | | // c, err := redigo.Dial("tcp", fmt.Sprintf("%s:%d", redisHost, redisPort)) |
| | | // if err != nil { |
| | | // return nil, err |
| | | // } |
| | | // return c, nil |
| | | // }, poolSize) |
| | | //} |
| | | // |
| | | //func Get() redigo.Conn { |
| | | // return pool.Get() |
| | | //} |
| | |
| | | github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 |
| | | github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee |
| | | github.com/astaxie/beego v1.12.1 |
| | | github.com/go-sql-driver/mysql v1.4.1 |
| | | github.com/gomodule/redigo v2.0.0+incompatible |
| | | github.com/mattn/go-sqlite3 v1.10.0 |
| | | github.com/robfig/cron v1.2.0 |
| | | github.com/satori/go.uuid v1.2.0 |
| | | github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect |
| | |
| | | github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= |
| | | github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= |
| | | github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= |
| | | github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= |
| | | github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= |
| | | github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= |
| | | github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= |
| | | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= |
| | | github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= |
| | | github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= |
| | | github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= |
| | | github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= |
| | | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= |
| | | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= |
| | |
| | | package service |
| | | |
| | | import ( |
| | | "car-service/cache" |
| | | "car-service/extend/util" |
| | | "car-service/models" |
| | | "car-service/vo" |
| | | "errors" |
| | | "fmt" |
| | | "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" |
| | | "github.com/gomodule/redigo/redis" |
| | | "github.com/satori/go.uuid" |
| | | "sync" |
| | | "time" |
| | | ) |
| | | |
| | | type UserService struct { |
| | |
| | | return false |
| | | } |
| | | |
| | | type CodCache struct { |
| | | phoneNum string |
| | | cod string |
| | | ex time.Time |
| | | } |
| | | var codMap = make(map[string]CodCache) |
| | | var codLock sync.RWMutex |
| | | func add2Cache(phoneNum string, code string) { |
| | | //写到redis缓存中 |
| | | c := cache.Get() |
| | | defer c.Close() |
| | | |
| | | reply, err := c.Do("SET", phoneNum, code, "EX", 5 * 60)//超时五分钟 |
| | | if err != nil { |
| | | fmt.Println("写入redis失败") |
| | | } else { |
| | | fmt.Println("写入redis成功,reply:", reply) |
| | | //c := cache.Get() |
| | | //defer c.Close() |
| | | // |
| | | //reply, err := c.Do("SET", phoneNum, code, "EX", 5 * 60)//超时五分钟 |
| | | //if err != nil { |
| | | // fmt.Println("写入redis失败") |
| | | //} else { |
| | | // fmt.Println("写入redis成功,reply:", reply) |
| | | //} |
| | | codLock.Lock() |
| | | defer codLock.Unlock() |
| | | expireTime := time.Now().Add(time.Minute * 5) |
| | | codMap[phoneNum] = CodCache{ |
| | | phoneNum:phoneNum, |
| | | cod: code, |
| | | ex:expireTime, |
| | | } |
| | | } |
| | | func existCode(phoneNum string) (bool,string) { |
| | | c := cache.Get() |
| | | defer c.Close() |
| | | |
| | | r, err := redis.String(c.Do("GET", phoneNum)) |
| | | if err != nil { |
| | | fmt.Println("existCode err:", err) |
| | | return false,"" |
| | | //c := cache.Get() |
| | | //defer c.Close() |
| | | // |
| | | //r, err := redis.String(c.Do("GET", phoneNum)) |
| | | //if err != nil { |
| | | // fmt.Println("existCode err:", err) |
| | | // return false,"" |
| | | //} |
| | | //return true,r |
| | | codLock.Lock() |
| | | defer codLock.Unlock() |
| | | if cache,exist := codMap[phoneNum];exist { |
| | | if cache.ex.Before(time.Now()) {//已过期 |
| | | return false, "" |
| | | } else { |
| | | return true, cache.cod |
| | | } |
| | | } else { |
| | | return false, "" |
| | | } |
| | | return true,r |
| | | } |