Skip to content

Redis

The logfire.instrument_redis() method will create a span for every command executed by your Redis clients.

Installation

Install logfire with the redis extra:

pip install 'logfire[redis]'
uv add 'logfire[redis]'
rye add logfire -E redis
poetry add 'logfire[redis]'

Usage

Let's setup a container with Redis and run a Python script that connects to the Redis server to demonstrate how to use Logfire with Redis.

Setup a Redis Server Using Docker

First, we need to initialize a Redis server. This can be easily done using Docker with the following command:

docker run --name redis -p 6379:6379 -d redis:latest

Run the Python script

main.py
import logfire
import redis


logfire.configure()
logfire.instrument_redis()

client = redis.StrictRedis(host="localhost", port=6379)
client.set("my-key", "my-value")

async def main():
    client = redis.asyncio.Redis(host="localhost", port=6379)
    await client.get("my-key")

if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

Info

You can pass capture_statement=True to logfire.instrument_redis() to capture the Redis command.

By default, it is set to False given that Redis commands can contain sensitive information.

The keyword arguments of logfire.instrument_redis() are passed to the RedisInstrumentor().instrument() method of the OpenTelemetry Redis Instrumentation package, read more about it here.

API Reference

instrument_redis

instrument_redis(
    capture_statement: bool = False,
    request_hook: RequestHook | None = None,
    response_hook: ResponseHook | None = None,
    **kwargs: Any,
) -> None

Instrument the redis module so that spans are automatically created for each operation.

Uses the OpenTelemetry Redis Instrumentation library, specifically RedisInstrumentor().instrument(), to which it passes **kwargs.

Parameters:

Name Type Description Default
capture_statement
bool

Set to True to capture the statement in the span attributes.

False
request_hook
RequestHook | None

A function that is called before performing the request.

None
response_hook
ResponseHook | None

A function that is called after receiving the response.

None
**kwargs
Any

Additional keyword arguments to pass to the OpenTelemetry instrument methods for future compatibility.

{}

RequestHook

Bases: Protocol

A hook that is called before the request is sent.

__call__
__call__(
    span: Span,
    instance: Connection,
    *args: Any,
    **kwargs: Any,
) -> None

Call the hook.

Parameters:

Name Type Description Default
span
Span

The span that is being created.

required
instance
Connection

The connection instance.

required
*args
Any

The arguments that are passed to the command.

()
**kwargs
Any

The keyword arguments that are passed to the command.

{}

ResponseHook

Bases: Protocol

A hook that is called after the response is received.

__call__
__call__(
    span: Span, instance: Connection, response: Any
) -> None

Call the hook.

Parameters:

Name Type Description Default
span
Span

The span that is being created.

required
instance
Connection

The connection instance.

required
response
Any

The response that is received.

required