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.
ctx := context.Background() // 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(ctx, "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"), ) // commit further commands, which will inherit from the parent in the context. c.Set(ctx, "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.
ctx := context.Background() // 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(ctx, "pipeline_counter") pipe.Expire(ctx, "pipeline_counter", time.Hour) // execute with trace pipe.Exec(ctx)
Output:
Example (WrapClient) ¶
You can create a traced ClusterClient using WrapClient
c := redis.NewClusterClient(&redis.ClusterOptions{}) redistrace.WrapClient(c) //Do something, passing in any relevant context c.Incr(context.TODO(), "my_counter")
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewClient ¶
func NewClient(opt *redis.Options, opts ...ClientOption) redis.UniversalClient
NewClient returns a new Client that is traced with the default tracer under the service name "redis".
func WrapClient ¶ added in v1.29.0
func WrapClient(client redis.UniversalClient, opts ...ClientOption)
WrapClient adds a hook to the given client that traces with the default tracer under the service name "redis".
Types ¶
type ClientOption ¶
type ClientOption func(*clientConfig)
ClientOption represents an option that can be used to create or wrap a client.
func WithAnalytics ¶
func WithAnalytics(on bool) ClientOption
WithAnalytics enables Trace Analytics for all started spans.
func WithAnalyticsRate ¶
func WithAnalyticsRate(rate float64) ClientOption
WithAnalyticsRate sets the sampling rate for Trace Analytics events correlated to started spans.
func WithErrorCheck ¶ added in v1.53.0
func WithErrorCheck(fn func(err error) bool) ClientOption
WithErrorCheck specifies a function fn which determines whether the passed error should be marked as an error.
func WithServiceName ¶
func WithServiceName(name string) ClientOption
WithServiceName sets the given service name for the client.
func WithSkipRawCommand ¶ added in v1.35.0
func WithSkipRawCommand(skip bool) ClientOption
WithSkipRawCommand reports whether to skip setting the "redis.raw_command" tag on instrumenation spans. This may be useful if the Datadog Agent is not set up to obfuscate this value and it could contain sensitive information.