Limitações
⚡ Especificações Técnicas
Limite de Itens
1000 simultâneos
Cleanup automático quando exceder
TTL Mínimo
1 segundo
Tempo mínimo de vida
TTL Máximo
24 horas (86400s)
Tempo máximo de vida
Tamanho de Chave
128 caracteres
Máximo permitido
Cleanup Automático
60 segundos
Intervalo de limpeza
Tipos Suportados
string, number, boolean, table
Via JSON para tables
🚀 Performance Benchmarks
Comparação de Performance
Query Database
50-200ms
0.1ms
500-2000x mais rápido
API Externa
200-1000ms
0.1ms
2000-10000x mais rápido
Arquivo JSON
10-50ms
0.1ms
100-500x mais rápido
Cálculo Complexo
5-20ms
0.1ms
50-200x mais rápido
Economia de Recursos
-- ✅ COM CACHE (Recomendado)
-- 1000 players consultando dinheiro:
-- 1ª consulta: 1 query database
-- 999 consultas seguintes: cache (0.1ms cada)
-- Total: 1 query + 999 cache hits = ~100ms
-- ❌ SEM CACHE (Problemático)
-- 1000 players consultando dinheiro:
-- Todas as consultas: query database (50ms cada)
-- Total: 1000 queries = ~50,000ms (50 segundos!)
📋 Best Practices e Limitações
✅ Boas Práticas
-- Usar TTL apropriado para o tipo de dado
LockSystem.Cache.set("player_money", money, 120) -- Dados que mudam: 2min
LockSystem.Cache.set("server_config", config, 3600) -- Configurações: 1h
LockSystem.Cache.set("player_country", country, 86400) -- Dados estáticos: 24h
-- Usar chaves descritivas e organizadas
LockSystem.Cache.set("money_" .. serial, amount, ttl) -- ✅ Descritiva
LockSystem.Cache.set("perm_admin_" .. serial, hasAdmin, ttl) -- ✅ Categorizada
-- Limpar cache quando dados mudam
function setPlayerMoney(player, amount)
dbExec(db, "UPDATE players SET money = ?", amount)
LockSystem.Cache.set("money_" .. getPlayerSerial(player), amount, 120)
end
❌ Evitar
-- Chaves aleatórias ou dinâmicas demais
LockSystem.Cache.set("temp_" .. math.random(), data) -- ❌ Impossível limpar
-- TTL muito baixo (ineficiente)
LockSystem.Cache.set("data", value, 1) -- ❌ Cache de 1 segundo
-- Dados muito grandes
LockSystem.Cache.set("huge_binary", massiveData) -- ❌ Uso excessivo de memória
-- Não sincronizar com database
function setMoney(player, amount)
dbExec(db, "UPDATE players SET money = ?", amount)
-- ❌ Esqueceu de atualizar o cache!
end
🛡️ Proteções de Segurança
Sistema Multi-Camadas
🔒 PROTEÇÃO INTEGRADA:
Camada 1: Validação de Acesso
├─ Stack trace validation
├─ Origem de chamada verificada
└─ Blacklist automático para hacks
Camada 2: Criptografia de Chaves
├─ Hash SHA-like para chaves
├─ Base64 encoding
└─ Prefixos de segurança
Camada 3: Controle de Memória
├─ Limite de 1000 itens
├─ Cleanup automático
└─ Monitoramento de uso
Camada 4: Anti-Tampering
├─ Detecção de modificação
├─ Validação de integridade
└─ Reportes de segurança
Indicadores de Tentativa de Hack
Tentativa de Acesso Direto:
LockSystem.Cache._storage
Modificação de Timers:
LockSystem.Cache._timers
Bypass de Validação: Calls de origens suspeitas
Overflow Intencional: Criação excessiva de cache
💡 Resolução de Problemas
Problemas Comuns
Cache não funciona
Stack validation bloqueando
Verificar origem da chamada
Hit rate baixo
TTL muito baixo
Aumentar tempo de cache
Uso alto de memória
Muitos itens cached
Implementar limpeza personalizada
Dados desatualizados
Cache não sincronizado
Atualizar cache ao modificar dados
Debug de Performance
-- Verificar se cache está sendo usado corretamente
local stats = LockSystem.Cache.stats()
if stats.hit_rate < 50 then
print("⚠️ Taxa de acerto baixa - Revisar estratégia de cache")
end
if stats.memory_kb > 10240 then
print("⚠️ Alto uso de memória - Implementar limpeza")
end
if stats.expired_items > stats.items * 0.3 then
print("⚠️ Muitos itens expirados - Revisar TTL")
end
Atualizado