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