dd-trace-go.v1: gopkg.in/DataDog/dd-trace-go.v1/contrib/garyburd/redigo Index | Examples | Files

package redigo

import "gopkg.in/DataDog/dd-trace-go.v1/contrib/garyburd/redigo"

Package redigo provides functions to trace the garyburd/redigo package (https://github.com/garyburd/redigo).

To start tracing Redis commands, use the TracedDial function to create a connection, passing in a service name of choice.

Code:

c, err := redigotrace.Dial("tcp", "127.0.0.1:6379")
if err != nil {
    log.Fatal(err)
}

// Emit spans per command by using your Redis connection as usual
c.Do("SET", "vehicle", "truck")

// Use a context to pass information down the call chain
root, ctx := tracer.StartSpanFromContext(context.Background(), "parent.request",
    tracer.ServiceName("web"),
    tracer.ResourceName("/home"),
)

// When passed a context as the final argument, c.Do will emit a span inheriting from 'parent.request'
c.Do("SET", "food", "cheese", ctx)
root.Finish()

Alternatively, provide a redis URL to the TracedDialURL function

Code:

c, err := redigotrace.DialURL("redis://127.0.0.1:6379")
if err != nil {
    log.Fatal(err)
}
c.Do("SET", "vehicle", "truck")

When using a redigo Pool, set your Dial function to return a traced connection

Code:

pool := &redis.Pool{
    Dial: func() (redis.Conn, error) {
        return redigotrace.Dial("tcp", "127.0.0.1:6379",
            redigotrace.WithServiceName("my-redis-backend"),
        )
    },
}

c := pool.Get()
c.Do("SET", " whiskey", " glass")

Code:

c, err := redigotrace.Dial("tcp", "127.0.0.1:6379",
    redigotrace.WithServiceName("my-redis-backend"),
    redis.DialKeepAlive(time.Minute),
)
if err != nil {
    log.Fatal(err)
}

// Emit spans per command by using your Redis connection as usual
c.Do("SET", "vehicle", "truck")

// Use a context to pass information down the call chain
root, ctx := tracer.StartSpanFromContext(context.Background(), "parent.request",
    tracer.ServiceName("web"),
    tracer.ResourceName("/home"),
)

// When passed a context as the final argument, c.Do will emit a span inheriting from 'parent.request'
c.Do("SET", "food", "cheese", ctx)
root.Finish()

Index

Examples

Package Files

option.go redigo.go

func Dial Uses

func Dial(network, address string, options ...interface{}) (redis.Conn, error)

Dial dials into the network address and returns a traced redis.Conn. The set of supported options must be either of type redis.DialOption or this package's DialOption.

func DialURL Uses

func DialURL(rawurl string, options ...interface{}) (redis.Conn, error)

DialURL connects to a Redis server at the given URL using the Redis URI scheme. URLs should follow the draft IANA specification for the scheme (https://www.iana.org/assignments/uri-schemes/prov/redis). The returned redis.Conn is traced.

type Conn Uses

type Conn struct {
    redis.Conn
    // contains filtered or unexported fields
}

Conn is an implementation of the redis.Conn interface that supports tracing

func (Conn) Do Uses

func (tc Conn) Do(commandName string, args ...interface{}) (reply interface{}, err error)

Do wraps redis.Conn.Do. It sends a command to the Redis server and returns the received reply. In the process it emits a span containing key information about the command sent. When passed a context.Context as the final argument, Do will ensure that any span created inherits from this context. The rest of the arguments are passed through to the Redis server unchanged.

type DialOption Uses

type DialOption func(*dialConfig)

DialOption represents an option that can be passed to Dial.

func WithAnalytics Uses

func WithAnalytics(on bool) DialOption

WithAnalytics enables Trace Analytics for all started spans.

func WithAnalyticsRate Uses

func WithAnalyticsRate(rate float64) DialOption

WithAnalyticsRate sets the sampling rate for Trace Analytics events correlated to started spans.

func WithServiceName Uses

func WithServiceName(name string) DialOption

WithServiceName sets the given service name for the dialled connection.

Package redigo imports 12 packages (graph). Updated 2020-08-05. Refresh now. Tools for package owners.