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() }
Output:
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() }
Output:
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.35.4
Pipelined executes a function parameter to build a Pipeline and then immediately executes it.
func (*Client) TxPipeline ¶ added in v1.35.4
TxPipeline acts like Pipeline, but wraps queued commands with MULTI/EXEC.
func (*Client) TxPipelined ¶ added in v1.35.4
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.