feat: Redis热数据+K线聚合+Dashboard MySQL指标修复
This commit is contained in:
1 parent
b8b1a3d5f6
commit
a843ab7b00
9 files changed
+311
-12
No files matched your search
@@ -64,3 +64,32 @@ func (r *goRedisCache) Ping(ctx context.Context) error {
|
||||
func (r *goRedisCache) Close() error {
|
||||
return r.client.Close()
|
||||
}
|
||||
|
||||
func (r *goRedisCache) ZAdd(ctx context.Context, key string, member SortedSetMember) error {
|
||||
return r.client.ZAdd(ctx, key, goredis.Z{
|
||||
Score: member.Score,
|
||||
Member: member.Member,
|
||||
}).Err()
|
||||
}
|
||||
|
||||
func (r *goRedisCache) ZRangeByScore(ctx context.Context, key string, min, max string) ([]SortedSetMember, error) {
|
||||
zs, err := r.client.ZRangeByScoreWithScores(ctx, key, &goredis.ZRangeBy{
|
||||
Min: min,
|
||||
Max: max,
|
||||
}).Result()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
members := make([]SortedSetMember, len(zs))
|
||||
for i, z := range zs {
|
||||
members[i] = SortedSetMember{
|
||||
Score: z.Score,
|
||||
Member: z.Member.(string),
|
||||
}
|
||||
}
|
||||
return members, nil
|
||||
}
|
||||
|
||||
func (r *goRedisCache) ZRemRangeByScore(ctx context.Context, key string, min, max string) error {
|
||||
return r.client.ZRemRangeByScore(ctx, key, min, max).Err()
|
||||
}
|
||||
@@ -34,6 +34,12 @@ type Config struct {
|
||||
DataDir string // redka 数据目录
|
||||
}
|
||||
|
||||
// SortedSetMember 有序集合成员 // Logan.Li
|
||||
type SortedSetMember struct {
|
||||
Score float64
|
||||
Member string
|
||||
}
|
||||
|
||||
// Cache Redis 缓存接口 // Logan.Li
|
||||
type Cache interface {
|
||||
Get(ctx context.Context, key string) (string, error)
|
||||
@@ -43,6 +49,11 @@ type Cache interface {
|
||||
Expire(ctx context.Context, key string, expiration time.Duration) error
|
||||
Ping(ctx context.Context) error
|
||||
Close() error
|
||||
|
||||
// 有序集合操作(热数据指标存储,仅 go-redis 后端完整支持)
|
||||
ZAdd(ctx context.Context, key string, member SortedSetMember) error
|
||||
ZRangeByScore(ctx context.Context, key string, min, max string) ([]SortedSetMember, error)
|
||||
ZRemRangeByScore(ctx context.Context, key string, min, max string) error
|
||||
}
|
||||
|
||||
// New 创建缓存实例(根据驱动自动选择后端)// Logan.Li
|
||||
|
||||
@@ -5,6 +5,7 @@ package redis
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/nalgeon/redka"
|
||||
@@ -96,3 +97,17 @@ func (r *redkaCache) Ping(ctx context.Context) error {
|
||||
func (r *redkaCache) Close() error {
|
||||
return r.db.Close()
|
||||
}
|
||||
|
||||
var errSortedSetNotSupported = fmt.Errorf("sorted set operations are not supported by the redka backend; use go-redis (driver=redis) instead")
|
||||
|
||||
func (r *redkaCache) ZAdd(ctx context.Context, key string, member SortedSetMember) error {
|
||||
return errSortedSetNotSupported
|
||||
}
|
||||
|
||||
func (r *redkaCache) ZRangeByScore(ctx context.Context, key string, min, max string) ([]SortedSetMember, error) {
|
||||
return nil, errSortedSetNotSupported
|
||||
}
|
||||
|
||||
func (r *redkaCache) ZRemRangeByScore(ctx context.Context, key string, min, max string) error {
|
||||
return errSortedSetNotSupported
|
||||
}
|
||||
Reference in new issue
Block a user