add redis zset structure
This commit is contained in:
parent
3120cfc3a5
commit
55a606a3f3
|
|
@ -30,8 +30,8 @@ func initClient(rCfg config.RedisConfig) *redis.Client {
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitClientInstance define func of return instance of redis client
|
// InitRedisClientInstance define func of return instance of redis client
|
||||||
func InitClientInstance(rCfg config.RedisConfig) *redis.Client {
|
func InitRedisClientInstance(rCfg config.RedisConfig) *redis.Client {
|
||||||
once.Do(func() {
|
once.Do(func() {
|
||||||
_globalStorageClient = initClient(rCfg)
|
_globalStorageClient = initClient(rCfg)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Package diagram provide diagram data structure and operation
|
||||||
|
package diagram
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
locker "modelRT/distributedlock"
|
||||||
|
"modelRT/logger"
|
||||||
|
|
||||||
|
"github.com/redis/go-redis/v9"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RedisZSet defines the encapsulation struct of redis zset type
|
||||||
|
type RedisZSet struct {
|
||||||
|
ctx context.Context
|
||||||
|
rwLocker *locker.RedissionRWLocker
|
||||||
|
storageClient *redis.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRedisZSet define func of new redis zset instance
|
||||||
|
func NewRedisZSet(ctx context.Context, key string, token string, lockLeaseTime uint64, needRefresh bool) *RedisHash {
|
||||||
|
return &RedisHash{
|
||||||
|
ctx: ctx,
|
||||||
|
rwLocker: locker.InitRWLocker(key, token, lockLeaseTime, needRefresh),
|
||||||
|
storageClient: GetRedisClientInstance(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ZADD define func of add redis zset by members
|
||||||
|
func (rs *RedisZSet) ZADD(setKey string, score float64, member interface{}) error {
|
||||||
|
err := rs.rwLocker.WLock(rs.ctx)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(rs.ctx, "lock wLock by setKey failed", "set_key", setKey, "error", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer rs.rwLocker.UnWLock(rs.ctx)
|
||||||
|
|
||||||
|
err = rs.storageClient.ZAdd(rs.ctx, setKey, redis.Z{Score: score, Member: member}).Err()
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(rs.ctx, "add set by score and memebers failed", "set_key", setKey, "members", member, "error", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO 优化redis 读取步骤
|
|
||||||
// MeasurementGetHandler retrieves the value of measurement data
|
// MeasurementGetHandler retrieves the value of measurement data
|
||||||
func MeasurementGetHandler(c *gin.Context) {
|
func MeasurementGetHandler(c *gin.Context) {
|
||||||
var request network.MeasurementGetRequest
|
var request network.MeasurementGetRequest
|
||||||
|
|
@ -24,6 +23,7 @@ func MeasurementGetHandler(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO 增加 redis 数据读取步骤
|
||||||
pgClient := database.GetPostgresDBClient()
|
pgClient := database.GetPostgresDBClient()
|
||||||
tx := pgClient.Begin()
|
tx := pgClient.Begin()
|
||||||
|
|
||||||
|
|
|
||||||
2
main.go
2
main.go
|
|
@ -80,7 +80,7 @@ func main() {
|
||||||
}
|
}
|
||||||
defer parsePool.Release()
|
defer parsePool.Release()
|
||||||
|
|
||||||
storageClient := diagram.InitClientInstance(modelRTConfig.StorageRedisConfig)
|
storageClient := diagram.InitRedisClientInstance(modelRTConfig.StorageRedisConfig)
|
||||||
defer storageClient.Close()
|
defer storageClient.Close()
|
||||||
|
|
||||||
lockerClient := locker.InitClientInstance(modelRTConfig.LockerRedisConfig)
|
lockerClient := locker.InitClientInstance(modelRTConfig.LockerRedisConfig)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
// Package network define struct of network operation
|
||||||
|
package network
|
||||||
|
|
||||||
|
// MeasurementGetRequest defines the request payload for getting an measurement
|
||||||
|
type MeasurementGetRequest struct {
|
||||||
|
MeasurementToken string `json:"token"`
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue