优化 local 模式兼容性与部署可靠性
- SQL 方言层:agent updated_at、dashboard 小时分桶、清理任务跨 SQLite/MySQL - Cache Capabilities:redka 跳过 ZSet/PubSub,Agent 聚合改 DB 直读 - local 模式 redka 初始化失败 Fatal;/version 返回 features - SQLite WAL + 连接池限制;K8s data 改 PVC 持久化 - run.sh:旧参数迁移、升级后 /version 校验
This commit is contained in:
1 parent
1f4f63cf6e
commit
b7166acda4
13 files changed
+374
-152
No files matched your search
@@ -33,6 +33,10 @@ func newGoRedis(cfg Config) (Cache, error) {
|
||||
return &goRedisCache{client: client}, nil
|
||||
}
|
||||
|
||||
func (r *goRedisCache) Capabilities() Capabilities {
|
||||
return Capabilities{SortedSet: true, PubSub: true}
|
||||
}
|
||||
|
||||
func (r *goRedisCache) Get(ctx context.Context, key string) (string, error) {
|
||||
val, err := r.client.Get(ctx, key).Result()
|
||||
if err == goredis.Nil {
|
||||
|
||||
@@ -40,8 +40,15 @@ type SortedSetMember struct {
|
||||
Member string
|
||||
}
|
||||
|
||||
// Capabilities 缓存后端能力(local/redka 与外部 Redis 差异)// Logan.Li
|
||||
type Capabilities struct {
|
||||
SortedSet bool `json:"sorted_set"`
|
||||
PubSub bool `json:"pubsub"`
|
||||
}
|
||||
|
||||
// Cache Redis 缓存接口 // Logan.Li
|
||||
type Cache interface {
|
||||
Capabilities() Capabilities
|
||||
Get(ctx context.Context, key string) (string, error)
|
||||
Set(ctx context.Context, key string, value string, expiration time.Duration) error
|
||||
Del(ctx context.Context, keys ...string) error
|
||||
|
||||
@@ -31,6 +31,10 @@ func newRedka(cfg Config) (Cache, error) {
|
||||
return &redkaCache{db: db}, nil
|
||||
}
|
||||
|
||||
func (r *redkaCache) Capabilities() Capabilities {
|
||||
return Capabilities{SortedSet: false, PubSub: false}
|
||||
}
|
||||
|
||||
func (r *redkaCache) Get(ctx context.Context, key string) (string, error) {
|
||||
// Redka v0.2.x: Str().Get() 返回 core.Value // Logan.Li
|
||||
val, err := r.db.Str().Get(key)
|
||||
@@ -115,5 +119,6 @@ func (r *redkaCache) ZRemRangeByScore(ctx context.Context, key string, min, max
|
||||
var errPubSubNotSupported = fmt.Errorf("Pub/Sub is not supported by the redka backend; use go-redis (driver=redis)")
|
||||
|
||||
func (r *redkaCache) Publish(ctx context.Context, channel string, message string) error {
|
||||
return errPubSubNotSupported
|
||||
// local/redka 无 Pub/Sub,流水线日志走轮询 Get,此处 no-op // Logan.Li
|
||||
return nil
|
||||
}
|
||||
Reference in new issue
Block a user