redis

package
v1.54.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2023 License: Apache-2.0, BSD-3-Clause, Apache-2.0 Imports: 13 Imported by: 8

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL