> ## Documentation Index
> Fetch the complete documentation index at: https://docs.praison.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Redis

> Redis for state and caching

# Redis

Redis is used for state management, caching, and vector search.

## Installation

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
pip install "praisonaiagents[tools]"
```

## Docker Setup

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
docker run -d --name praison-redis -p 6379:6379 redis:7
```

## Quick Start

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonaiagents import Agent

agent = Agent(
    name="Assistant",
    instructions="You are a helpful assistant.",
    memory={
        "backend": "redis",
        "db": "redis://localhost:6379",
        "session_id": "my-session"
    }
)

response = agent.start("Hello!")
print(response)
```

## Connection String Format

```
redis://localhost:6379
redis://:password@host:port/db_number
```

## Environment Variables

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
export PRAISON_STATE_URL="redis://localhost:6379"
```

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import os
from praisonaiagents import Agent

agent = Agent(
    name="Assistant",
    memory={"db": os.getenv("PRAISON_STATE_URL")}
)
```

## CLI

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# Validate connection
praisonai persistence doctor \
    --state-url "redis://localhost:6379"
```

## Use Cases

* **Session state caching**
* **Rate limiting**
* **Temporary data storage**
* **Vector search (Redis Stack)**

## When to Use

✅ **Good for:**

* Session caching
* Rate limiting
* Real-time features
* Pub/sub messaging

❌ **Not recommended for:**

* Long-term storage
* Complex queries
* Large datasets

## Storage Backend (Advanced)

For training data, sessions, and general persistence, use the `RedisBackend`:

<CodeGroup>
  ```python BaseJSONStore theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  from praisonaiagents.storage import RedisBackend, BaseJSONStore

  backend = RedisBackend(
      url="redis://localhost:6379",
      prefix="praison:",
      ttl=3600  # 1 hour TTL
  )
  store = BaseJSONStore("session.json", backend=backend)
  store.save({"messages": ["Hello"]})
  data = store.load()
  ```

  ```python TrainingStorage theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  from praisonai.train.agents.storage import TrainingStorage
  from praisonaiagents.storage import RedisBackend

  backend = RedisBackend(url="redis://localhost:6379", prefix="train:", ttl=86400)
  storage = TrainingStorage(session_id="train-123", backend=backend)
  ```

  ```python SessionManager theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  from praisonai.cli.state.sessions import SessionManager
  from praisonaiagents.storage import RedisBackend

  backend = RedisBackend(url="redis://localhost:6379", prefix="session:", ttl=3600)
  manager = SessionManager(backend=backend)
  sessions = manager.list(limit=10)
  ```

  ```python RunHistory theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  from praisonai.recipe.history import RunHistory
  from praisonaiagents.storage import RedisBackend

  backend = RedisBackend(url="redis://localhost:6379", prefix="runs:")
  history = RunHistory(backend=backend)
  ```

  ```python MCPToolIndex theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  from praisonai.mcp_server.tool_index import MCPToolIndex
  from praisonaiagents.storage import RedisBackend

  backend = RedisBackend(url="redis://localhost:6379", prefix="mcp:")
  index = MCPToolIndex(backend=backend)
  ```
</CodeGroup>

### CLI Usage

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# Training with Redis backend
praisonai train agents --input "Hello" --storage-backend redis://localhost:6379

# Session list with Redis backend
praisonai session list --storage-backend redis://localhost:6379
```

### RedisBackend Features

| Feature            | Description                                 |
| ------------------ | ------------------------------------------- |
| **TTL Support**    | Automatic expiration with `ttl` parameter   |
| **Key Prefixing**  | Namespace isolation with `prefix` parameter |
| **Sub-ms Latency** | High-speed caching                          |
| **Distributed**    | Shared state across nodes                   |

See [Storage Backends](/docs/storage/backends) for more details.
