liuxiaolong
2020-07-29 61a10d29390848c9bf71e889d1c1d75ba8a94a55
rm redis, use local cache
4个文件已修改
117 ■■■■■ 已修改文件
cache/redis.go 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.mod 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.sum 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/userService.go 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cache/redis.go
@@ -1,26 +1,26 @@
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()
//}
go.mod
@@ -7,8 +7,7 @@
    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
go.sum
@@ -56,14 +56,12 @@
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=
service/userService.go
@@ -1,15 +1,15 @@
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 {
@@ -135,26 +135,52 @@
    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
}