feat(redis): add Do/DoCtx for generic command execution #5417 (#5442)

This commit is contained in:
Ran丶
2026-03-22 20:26:53 +08:00
committed by GitHub
parent ba9c275853
commit 0069721586
2 changed files with 50 additions and 0 deletions

View File

@@ -65,6 +65,7 @@ type (
// RedisNode interface represents a redis node.
RedisNode interface {
red.Cmdable
Do(ctx context.Context, args ...any) *red.Cmd
}
// GeoLocation is used with GeoAdd to add geospatial location.
@@ -421,6 +422,25 @@ func (s *Redis) EvalCtx(ctx context.Context, script string, keys []string,
return conn.Eval(ctx, script, keys, args...).Result()
}
// Do executes a generic redis command with given arguments.
func (s *Redis) Do(args ...any) (any, error) {
return s.DoCtx(context.Background(), args...)
}
// DoCtx executes a generic redis command with given arguments using the provided context.
func (s *Redis) DoCtx(ctx context.Context, args ...any) (any, error) {
if len(args) == 0 {
return nil, errors.New("missing redis command")
}
conn, err := getRedis(s)
if err != nil {
return nil, err
}
return conn.Do(ctx, args...).Result()
}
// EvalSha is the implementation of redis evalsha command.
func (s *Redis) EvalSha(sha string, keys []string, args ...any) (any, error) {
return s.EvalShaCtx(context.Background(), sha, keys, args...)