diff --git a/rueidisaside/aside.go b/rueidisaside/aside.go index e9add1b4..7d71aaf3 100644 --- a/rueidisaside/aside.go +++ b/rueidisaside/aside.go @@ -21,6 +21,7 @@ type ClientOption struct { type CacheAsideClient interface { Get(ctx context.Context, ttl time.Duration, key string, fn func(ctx context.Context, key string) (val string, err error)) (val string, err error) Del(ctx context.Context, key string) error + Client() rueidis.Client Close() } @@ -177,6 +178,11 @@ func (c *Client) Del(ctx context.Context, key string) error { return c.client.Do(ctx, c.client.B().Del().Key(key).Build()).Error() } +// Client exports the underlying rueidis.Client +func (c *Client) Client() rueidis.Client { + return c.client +} + func (c *Client) Close() { c.cancel() c.mu.Lock() diff --git a/rueidisaside/aside_test.go b/rueidisaside/aside_test.go index 295299ed..84c5e4de 100644 --- a/rueidisaside/aside_test.go +++ b/rueidisaside/aside_test.go @@ -32,16 +32,21 @@ func TestClientErr(t *testing.T) { } func TestWithClientBuilder(t *testing.T) { - client, err := NewClient(ClientOption{ + var client rueidis.Client + c, err := NewClient(ClientOption{ ClientOption: rueidis.ClientOption{InitAddress: addr}, - ClientBuilder: func(option rueidis.ClientOption) (rueidis.Client, error) { - return rueidis.NewClient(option) + ClientBuilder: func(option rueidis.ClientOption) (_ rueidis.Client, err error) { + client, err = rueidis.NewClient(option) + return client, err }, }) if err != nil { t.Fatal(err) } - defer client.Close() + defer c.Close() + if c.Client() != client { + t.Fatal("client mismatched") + } } func TestCacheFilled(t *testing.T) {