feat: Redis热数据+K线聚合+Dashboard MySQL指标修复

This commit is contained in:
attacker committed 2026-06-18 08:03:49 +00:00
1 parent b8b1a3d5f6
commit a843ab7b00
9 files changed
+311 -12

No files matched your search

+29
View File
@@ -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()
}
+11
View File
@@ -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
+15
View File
@@ -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
}