Support redis conn param

This commit is contained in:
CareyWong 2020-03-20 11:57:10 +08:00
parent 736fddf345
commit 9d8dd8dcef

21
main.go
View File

@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/gomodule/redigo/redis" "github.com/gomodule/redigo/redis"
"log"
"math/rand" "math/rand"
"net/http" "net/http"
) )
@ -21,7 +22,10 @@ const letterBytes = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW
const defaultPort int = 8002 const defaultPort int = 8002
const defaultExpire = 90 const defaultExpire = 90
const redisConfig = "127.0.0.1:6379" const defaultRedisConfig = "127.0.0.1:6379"
var redisConfig string
var redisClient redis.Conn
func main() { func main() {
gin.SetMode(gin.ReleaseMode) gin.SetMode(gin.ReleaseMode)
@ -30,13 +34,17 @@ func main() {
port := flag.Int("port", defaultPort, "服务端口") port := flag.Int("port", defaultPort, "服务端口")
domain := flag.String("domain", "", "短链接域名,必填项") domain := flag.String("domain", "", "短链接域名,必填项")
ttl := flag.Int("ttl", defaultExpire, "短链接有效期,单位(天)默认90天。") ttl := flag.Int("ttl", defaultExpire, "短链接有效期,单位(天)默认90天。")
conn := flag.String("conn", defaultRedisConfig, "Redis连接格式: host:port")
flag.Parse() flag.Parse()
if *domain == "" { if *domain == "" {
flag.Usage() flag.Usage()
return log.Fatalln("缺少关键参数")
} }
redisConfig = *conn
redisClient = initRedis()
router.POST("/short", func(context *gin.Context) { router.POST("/short", func(context *gin.Context) {
res := &Response{ res := &Response{
Code: 1, Code: 1,
@ -84,16 +92,12 @@ func main() {
// 短链接转长链接 // 短链接转长链接
func shortToLong(shortKey string) string { func shortToLong(shortKey string) string {
redisClient := initRedis()
longUrl, _ := redis.String(redisClient.Do("get", shortKey)) longUrl, _ := redis.String(redisClient.Do("get", shortKey))
return longUrl return longUrl
} }
// 长链接转短链接 // 长链接转短链接
func longToShort(longUrl string, ttl int) string { func longToShort(longUrl string, ttl int) string {
redisClient := initRedis()
// 是否生成过该长链接对应短链接 // 是否生成过该长链接对应短链接
_existsKey, _ := redis.String(redisClient.Do("get", longUrl)) _existsKey, _ := redis.String(redisClient.Do("get", longUrl))
if _existsKey != "" { if _existsKey != "" {
@ -133,7 +137,10 @@ func generate(bits int) string {
} }
func initRedis() redis.Conn { func initRedis() redis.Conn {
client, _ := redis.Dial("tcp", redisConfig) client, err := redis.Dial("tcp", redisConfig)
if err != nil {
log.Fatalln(err.Error())
}
return client return client
} }