redis
This commit is contained in:
parent
a1b10987f0
commit
32e3d99d37
3
go.mod
3
go.mod
@ -5,13 +5,16 @@ go 1.19
|
||||
require (
|
||||
github.com/bwmarrin/snowflake v0.3.0 // indirect
|
||||
github.com/bytedance/sonic v1.9.1 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/gin-gonic/gin v1.9.1 // indirect
|
||||
github.com/go-playground/locales v0.14.1 // indirect
|
||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||
github.com/go-playground/validator/v10 v10.14.0 // indirect
|
||||
github.com/go-redis/redis/v8 v8.11.5 // indirect
|
||||
github.com/go-sql-driver/mysql v1.7.0 // indirect
|
||||
github.com/goccy/go-json v0.10.2 // indirect
|
||||
github.com/gomodule/redigo v1.8.9 // indirect
|
||||
|
||||
6
go.sum
6
go.sum
@ -3,11 +3,15 @@ github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/
|
||||
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
|
||||
github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
|
||||
github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
|
||||
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
|
||||
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
|
||||
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
|
||||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||
@ -20,6 +24,8 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
|
||||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||
github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js=
|
||||
github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
|
||||
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
|
||||
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
|
||||
github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
|
||||
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
||||
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||
|
||||
41
lxLock/redisLock.go
Normal file
41
lxLock/redisLock.go
Normal file
@ -0,0 +1,41 @@
|
||||
package lxLock
|
||||
|
||||
import (
|
||||
"context"
|
||||
"git.listensoft.net/tool/lxutils/lxDb"
|
||||
"github.com/go-redis/redis/v8"
|
||||
"time"
|
||||
)
|
||||
|
||||
// RedisPool Redis连接池
|
||||
var RedisClient *redis.Client
|
||||
var redisCtx = context.Background()
|
||||
|
||||
func InitRedis(conf lxDb.RedisConfig) {
|
||||
if conf.URL == "" {
|
||||
RedisClient = nil
|
||||
return
|
||||
}
|
||||
RedisClient = redis.NewClient(&redis.Options{
|
||||
Addr: conf.URL, // Redis 服务器地址
|
||||
Password: conf.Password, // Redis 密码
|
||||
DB: 0, // 默认数据库
|
||||
})
|
||||
}
|
||||
|
||||
// GetRedisLock 尝试获取锁
|
||||
func GetRedisLock(lockKey string, expiration time.Duration) (bool, error) {
|
||||
// 使用 SETNX 命令尝试获取锁
|
||||
result, err := RedisClient.SetNX(redisCtx, lockKey, "locked", expiration).Result()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// DelRedisLock 释放锁
|
||||
func DelRedisLock(lockKey string) error {
|
||||
// 使用 DEL 命令释放锁
|
||||
_, err := RedisClient.Del(redisCtx, lockKey).Result()
|
||||
return err
|
||||
}
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"git.listensoft.net/tool/lxutils/lxDb"
|
||||
"git.listensoft.net/tool/lxutils/lxLock"
|
||||
"git.listensoft.net/tool/lxutils/lxlog"
|
||||
"git.listensoft.net/tool/lxutils/lxzap"
|
||||
"github.com/gin-gonic/gin"
|
||||
@ -15,9 +16,9 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func Run(env string, port string, fun func(), r func(router *gin.Engine), zapConfig lxzap.LogConfig, dbConf lxDb.DbConfig, redisConf lxDb.RedisConfig) {
|
||||
func Run(env string, port string, fun func(), r func(router *gin.Engine), zapConfig lxzap.ZapLogConfig, dbConf lxDb.DbConfig, redisConf lxDb.RedisConfig) {
|
||||
_ = lxlog.InitLog()
|
||||
err := lxzap.InitLogger(zapConfig)
|
||||
err := lxzap.InitZapLogger(zapConfig)
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
@ -30,6 +31,7 @@ func Run(env string, port string, fun func(), r func(router *gin.Engine), zapCon
|
||||
}
|
||||
lxDb.InitDB(env, dbConf)
|
||||
lxDb.InitRedis(redisConf)
|
||||
lxLock.InitRedis(redisConf)
|
||||
fun()
|
||||
r(app)
|
||||
srv := http.Server{
|
||||
|
||||
@ -24,7 +24,7 @@ var Lg *zap.Logger
|
||||
// MaxSize = 2
|
||||
// MaxAge = 1000
|
||||
// MaxBackups = 1000
|
||||
type LogConfig struct {
|
||||
type ZapLogConfig struct {
|
||||
Level string `json:"level"`
|
||||
Filename string `json:"filename"`
|
||||
MaxSize int `json:"maxsize"`
|
||||
@ -32,8 +32,8 @@ type LogConfig struct {
|
||||
MaxBackups int `json:"max_backups"`
|
||||
}
|
||||
|
||||
// InitLogger 初始化Logger
|
||||
func InitLogger(cfg LogConfig) (err error) {
|
||||
// InitZapLogger 初始化Logger
|
||||
func InitZapLogger(cfg ZapLogConfig) (err error) {
|
||||
writeSyncer := getLogWriter(cfg.Filename, cfg.MaxSize, cfg.MaxBackups, cfg.MaxAge)
|
||||
encoder := getEncoder()
|
||||
var l = new(zapcore.Level)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user