Metadata-Version: 2.4
Name: simple-redis-cache
Version: 0.2.0
Summary: A library that simplifies working with Redis in Python
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: redis>=8.0.1
Dynamic: license-file

# simple-redis-cache

[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](https://hotpotato89.github.io/simple-redis-cache/coverage/)
[![PyPI version](https://badge.fury.io/py/simple-redis-cache.svg)](https://badge.fury.io/py/simple-redis-cache)

Простой декоратор для кэширования асинхронных функций в Redis.


## Особенности

- **Автоматическая генерация ключей** — ключи создаются на основе имени функции и аргументов
- **Инвалидация по префиксу** — очищайте кэш группами
- **Кастомный JSON-энкодер** — поддерживает `datetime`, `Decimal`, `UUID`, Pydantic-модели
- **Устойчивость к ошибкам** — ошибки Redis не ломают приложение
- **Гибкая настройка** — можно передать свой логгер



## Установка

```bash
pip install simple-redis-cache
```

## Пример

```python
from redis.asyncio import Redis
from simple_redis_cache import Cache

redis = Redis()
cache = Cache(redis)

@cache.cache(ttl=60, prefix="user")
async def get_user(user_id: int):
    return {"id": user_id, "name": "Alice"}

# Первый вызов — вычисляется, второй — из кэша
r1 = await get_user(1)
r2 = await get_user(1)

# Одинаковый результат
print(r1 == r2)
```

## Инвалидация
```python
await cache.invalidate_cache(prefix="user")
```

## Лицензия
[**MIT**](LICENSE) 
## Автор
[**hotpotato89**](https://github.com/hotpotato89)
