golang搭建http使用redis lua实现电商秒杀代码

代码语言:golang

所属分类:其他

代码描述:golang搭建http使用redis lua实现电商秒杀代码

代码标签: golang http redis lua 电商 秒杀 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

package main

import (

   "fmt"
   "github.com/gin-gonic/gin"
   "github.com/go-redis/redis"
   "math/rand"
   "net/http"
   "strconv"
   "time"
)

var redisDb *redis.Client
var luaScript = `
         local userId   = KEYS[1];
         local goodKey  = KEYS[2];
         local stock    = KEYS[3];
         local userExit = redis.call("sismember",goodKey,userId);
            if tonumber(userExit) == 1 then
                return 2;
            end 
            local num = redis.call("get",stock);
            if tonumber(num) <= 0 then
                return 3;
            else
                redis.call("decr",stock);
                redis.call("sadd",goodKey,userId);
            end 
            return 1;`
var evalSha string

func init() {
   initRedisClient()
}

func initRedisClient() {
   redisDb = redis.NewClient(&redis.Options{
      Addr:     "localhost:6379",
      Password: "",
      DB:       0,
   })

   var err error
   evalSha, err = redisDb.ScriptLoad(luaScript).Result()
   if err != nil {
      panic(err)
   }
}
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0