Назад к гайдам

Redis: Кэширование и очереди задач

Backend Средний Celery Django Python Redis
5 мин чтения 21 просмотров

# Redis: Кэширование и очереди задач

## Введение

Redis - это in-memory структура данных, используемая как база данных, кэш и брокер сообщений. В этом гайде мы рассмотрим основные сценарии использования.

## Установка

```bash
# Ubuntu/Debian
sudo apt-get install redis-server

# macOS
brew install redis

# Docker
docker run -d -p 6379:6379 redis:alpine
```

## Кэширование в Django

### Настройка

```python
# settings.py
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
}
}
```

### Использование

```python
from django.core.cache import cache

# Сохранение
cache.set('key', 'value', timeout=3600)

# Получение
value = cache.get('key')

# Удаление
cache.delete('key')
```

## Очереди задач с Celery

### Настройка Celery

```python
# celery.py
from celery import Celery

app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
```

### Создание задач

```python
from celery import shared_task

@shared_task
def send_email_task(user_id):
# Отправка email
pass
```

### Запуск воркера

```bash
celery -A myproject worker -l info
```

## Структуры данных Redis

### Strings

```python
import redis
r = redis.Redis()

r.set('key', 'value')
r.get('key')
```

### Lists

```python
r.lpush('list', 'item1')
r.rpop('list')
```

### Sets

```python
r.sadd('set', 'member1')
r.smembers('set')
```

### Hashes

```python
r.hset('hash', 'field', 'value')
r.hget('hash', 'field')
```

## Лучшие практики

1. Используйте TTL для кэшированных данных
2. Настраивайте maxmemory и политику eviction
3. Используйте Redis Sentinel для высокой доступности
4. Мониторьте использование памяти
5. Используйте pipeline для множественных операций

## Заключение

Redis - мощный инструмент для кэширования и очередей. Правильное использование значительно улучшит производительность ваших приложений.