Sistema de Cache
Cache multi-backend com suporte a memória, SQLite (arquivo) e Redis.
Configuração
# Backend: memory (padrão), file, redis
CACHE_BACKEND=memory
# Para SQLite
CACHE_DB=cache.db
# Para Redis
CACHE_REDIS_URL=redis://localhost:6379/0
CACHE_PREFIX=velox
CACHE_DEFAULT_TIMEOUT=300
—
Uso Básico
from velox.cache import cache
# Definir valor
cache.set('user:1', {'name': 'João', 'email': 'joao@email.com'}, timeout=300)
# Obter valor
user = cache.get('user:1')
# Verificar existência
if cache.has('user:1'):
print('Usuário está em cache')
# Deletar
cache.delete('user:1')
# Limpar tudo
cache.clear()
—
Decorador cache_on
Cacheia resultado de funções:
from velox.cache import cache_on
@cache_on(lambda user_id: f'user:{user_id}', timeout=60)
def get_user(user_id):
# Simula busca no banco
return db.query(f'SELECT * FROM users WHERE id = {user_id}')
# Primeira chamada: executa função
user = get_user(1)
# Segunda chamada: retorna do cache
user = get_user(1)
—
Operações em Massa
# Obter múltiplas chaves
dados = cache.get_many(['user:1', 'user:2', 'user:3'])
# Definir múltiplas chaves
cache.set_many({
'config:site': 'Meu Site',
'config:theme': 'dark',
}, timeout=3600)
# Deletar múltiplas chaves
cache.delete_many(['user:1', 'user:2', 'user:3'])
—
Estatísticas
stats = cache.stats
print(f"Hits: {stats['hits']}")
print(f"Misses: {stats['misses']}")
print(f"Hit rate: {stats['hit_rate']}%")
print(f"Chaves: {stats['keys']}")
—
Backends
Memory (desenvolvimento)
Padrão, rápido, não persiste entre reinicializações.
CACHE_BACKEND=memory
FileCache (produção simples)
Persiste em SQLite, sobrevive a reinicializações.
CACHE_BACKEND=file
CACHE_DB=cache.db
RedisCache (alta performance)
Recomendado para produção com múltiplos workers.
CACHE_BACKEND=redis
CACHE_REDIS_URL=redis://localhost:6379/0
Requer: pip install redis
—
Template Cache
from velox.cache import template_cache
# Habilitar cache de templates
TEMPLATE_CACHE=true
# Obter template compilado
compiled = template_cache.get('index.html')
# Limpar cache de templates
template_cache.clear()