Documentation
¶
Overview ¶
Package redis provides tracing functions for tracing the go-redis/redis package (https://github.com/go-redis/redis). This package supports versions up to go-redis 6.15.
Example ¶
To start tracing Redis, simply create a new client using the library and continue using as you normally would.
package main
import (
"context"
"github.com/go-redis/redis"
redistrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/go-redis/redis"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func main() {
// create a new Client
opts := &redis.Options{Addr: "127.0.0.1", Password: "", DB: 0}
c := redistrace.NewClient(opts)
// any action emits a span
c.Set("test_key", "test_value", 0)
// optionally, create a new root span
root, ctx := tracer.StartSpanFromContext(context.Background(), "parent.request",
tracer.SpanType(ext.SpanTypeRedis),
tracer.ServiceName("web"),
tracer.ResourceName("/home"),
)
// set the context on the client
c = c.WithContext(ctx)
// commit further commands, which will inherit from the parent in the context.
c.Set("food", "cheese", 0)
root.Finish()
}
Example (Pipeliner) ¶
You can also trace Redis Pipelines. Simply use as usual and the traces will be automatically picked up by the underlying implementation.
package main
import (
"time"
"github.com/go-redis/redis"
redistrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/go-redis/redis"
)
func main() {
// create a client
opts := &redis.Options{Addr: "127.0.0.1", Password: "", DB: 0}
c := redistrace.NewClient(opts, redistrace.WithServiceName("my-redis-service"))
// open the pipeline
pipe := c.Pipeline()
// submit some commands
pipe.Incr("pipeline_counter")
pipe.Expire("pipeline_counter", time.Hour)
// execute with trace
pipe.Exec()
}
Index ¶
- type Client
- func (c *Client) Pipeline() redis.Pipeliner
- func (c *Client) Pipelined(fn func(redis.Pipeliner) error) ([]redis.Cmder, error)
- func (c *Client) TxPipeline() redis.Pipeliner
- func (c *Client) TxPipelined(fn func(redis.Pipeliner) error) ([]redis.Cmder, error)
- func (c *Client) WithContext(ctx context.Context) *Client
- type ClientOption
- type Pipeliner
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶ added in v1.0.0
Client is used to trace requests to a redis server.
func NewClient ¶ added in v1.0.0
func NewClient(opt *redis.Options, opts ...ClientOption) *Client
NewClient returns a new Client that is traced with the default tracer under the service name "redis".
func WrapClient ¶ added in v1.0.0
func WrapClient(c *redis.Client, opts ...ClientOption) *Client
WrapClient wraps a given redis.Client with a tracer under the given service name.
func (*Client) Pipelined ¶ added in v1.33.3
Pipelined executes a function parameter to build a Pipeline and then immediately executes it.
func (*Client) TxPipeline ¶ added in v1.33.3
TxPipeline acts like Pipeline, but wraps queued commands with MULTI/EXEC.
func (*Client) TxPipelined ¶ added in v1.33.3
TxPipelined executes a function parameter to build a Transactional Pipeline and then immediately executes it.
type ClientOption ¶ added in v1.0.0
type ClientOption func(*clientConfig)
ClientOption represents an option that can be used to create or wrap a client.
func WithAnalytics ¶ added in v1.11.0
func WithAnalytics(on bool) ClientOption
WithAnalytics enables Trace Analytics for all started spans.
func WithAnalyticsRate ¶ added in v1.11.0
func WithAnalyticsRate(rate float64) ClientOption
WithAnalyticsRate sets the sampling rate for Trace Analytics events correlated to started spans.
func WithServiceName ¶ added in v1.0.0
func WithServiceName(name string) ClientOption
WithServiceName sets the given service name for the client.
type Pipeliner ¶ added in v1.0.0
Pipeliner is used to trace pipelines executed on a Redis server.
func (*Pipeliner) Exec ¶ added in v1.0.0
Exec calls Pipeline.Exec() ensuring that the resulting Redis calls are traced.
func (*Pipeliner) ExecWithContext ¶ added in v1.0.0
ExecWithContext calls Pipeline.Exec(). It ensures that the resulting Redis calls are traced, and that emitted spans are children of the given Context.