go-redis/redis · error

not implemented

Error message

not implemented

What it means

The Quit method panics with 'not implemented'. Quit is deprecated as of Redis 7.2.0; the comment says to just close the connection. The method signature is retained on the Cmdable interface but its body deliberately panics because QUIT must close the calling connection, which the pooled client model does not support.

Source

Thrown at commands.go:475

// DoRaw executes a command and returns the raw RESP protocol bytes without parsing.
func (c cmdable) DoRaw(ctx context.Context, args ...interface{}) *RawCmd {
	cmd := NewRawCmd(ctx, args...)
	_ = c(ctx, cmd)
	return cmd
}

// DoRawWriteTo executes a command and streams raw RESP bytes directly to w without intermediate allocations.
func (c cmdable) DoRawWriteTo(ctx context.Context, w io.Writer, args ...interface{}) *RawWriteToCmd {
	cmd := NewRawWriteToCmd(ctx, w, args...)
	_ = c(ctx, cmd)
	return cmd
}

// Quit closes the connection.
//
// Deprecated: Just close the connection instead as of Redis 7.2.0.
func (c cmdable) Quit(_ context.Context) *StatusCmd {
	panic("not implemented")
}

//------------------------------------------------------------------------------

func (c cmdable) BgRewriteAOF(ctx context.Context) *StatusCmd {
	cmd := NewStatusCmd(ctx, "bgrewriteaof")
	_ = c(ctx, cmd)
	return cmd
}

func (c cmdable) BgSave(ctx context.Context) *StatusCmd {
	cmd := NewStatusCmd(ctx, "bgsave")
	_ = c(ctx, cmd)
	return cmd
}

func (c cmdable) ClientKill(ctx context.Context, ipPort string) *StatusCmd {
	cmd := NewStatusCmd(ctx, "client", "kill", ipPort)

View on GitHub (pinned to 36d97525cd)

Solutions

  1. Do not call Quit; close the client with client.Close() instead.
  2. Remove any Quit references and rely on connection-pool teardown.
  3. If you need a per-connection close, use a raw Conn via client.Conn().

Example fix

// before
client.Quit(ctx)

// after
client.Close()
Defensive patterns

Strategy: validation

Validate before calling

// Quit is intentionally unsupported. Validate at the call site by not calling it.
// Replace any client.Quit(ctx) with client.Close().

Prevention

When it happens

Trigger: Calling client.Quit(ctx) (or invoking it through the Cmdable interface) on any client type.

Common situations: Porting code from another Redis client that issues QUIT, or auto-generating command calls from a Redis command list without checking deprecation.

Related errors


AI-assisted analysis of go-redis/redis@36d97525cd (2026-08-06). Data as JSON: /data/errors/260b9752ba789447.json. Report an issue: GitHub.