# Como Usar?

### Método Básico de Cache

```lua
-- Armazenar dados com TTL (Time To Live)
LockSystem.Cache.set("player_money_123", 50000, 300) -- 5 minutos

-- Recuperar dados
local money = LockSystem.Cache.get("player_money_123")
if money then
    print("Money cached: " .. money) -- Retorno instantâneo
else
    print("Cache não encontrado ou expirado")
end

-- Verificar se existe no cache
if LockSystem.Cache.has("player_money_123") then
    print("Dados estão em cache")
end

-- Remover do cache manualmente
LockSystem.Cache.remove("player_money_123")
```

### Método Remember (Mais Inteligente)

```lua
-- Se não existir no cache, executa callback e armazena resultado
local topPlayers = LockSystem.Cache.remember("top_players", 600, function()
    -- Esta query só executa se o cache não existir
    local query = dbQuery(database, "SELECT * FROM players ORDER BY score DESC LIMIT 10")
    local result = dbPoll(query, -1)
    dbFree(query)
    return result
end)

-- Uso subsequente retorna do cache instantaneamente
print("Top players: " .. #topPlayers)
```

### Cache com Callback de Expiração

```lua
-- Executar função específica quando o cache expirar
LockSystem.Cache.setWithCallback("temp_ban_123", true, 300, function(key, value)
    outputChatBox("Ban temporário de 5 minutos expirou!", root)
    -- Código para liberar player
    setElementData(getPlayerFromSerial("123"), "banned", false)
end)
```

### Limpeza com Padrões

```lua
-- Limpar todos os caches que começam com "player_"
LockSystem.Cache.clear("player_*")

-- Limpar todos os caches que começam com "vehicle_"
LockSystem.Cache.clear("vehicle_*")

-- Limpar todo o cache
LockSystem.Cache.clear()

-- Retorna número de itens removidos
local removed = LockSystem.Cache.clear("temp_*")
print("Removidos " .. removed .. " itens temporários")
```
