Redis: Кэширование и очереди задач
# 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 - мощный инструмент для кэширования и очередей. Правильное использование значительно улучшит производительность ваших приложений.