Histórico da Página
Dispara a execução de um comando a ser processado pelo servidor Redis.
Sintaxe
| Bloco de código |
|---|
oRedisAfter := oRedisClient:Exec(cCommand [, cParam1 [, cParam2 ... [, cParamN] ], @retVal) |
Parâmetros
| Nome | Tipo | Descrição | Obrigatório | Referência | Observações |
|---|---|---|---|---|---|
cCommand | Caracter | Comando Redis a ser executado | X | ||
cParam1 | Caracter | Complemento do comando | Substituirá a primeira interrogação (ou ?) que houver no comando cCommand. | ||
cParam2 | Caracter | Complemento do comando | Substituirá a segunda interrogação (ou ?) que houver no comando cCommand. | ||
| ... | ... | ... | Quantidade indefinida de parâmetros complementares adicionais | ||
cParamN | Caracter | Complemento do comando | Substituirá a n-ésima interrogação (ou ?) que houver no comando cCommand. | ||
retVal | Variável | Receberá o resultado da execução | X | X | Irá conter o resultado do comando executado no Redis conforme o tipo de operação, podendo ser status (lógico), numérico, texto (caracter), array, nulo. |
Retorno
| Nome | Tipo | Descrição | Observações |
|---|---|---|---|
oRedisAfter | objeto tRedisClient | Cópia do objeto sobre o qual foi feita a chamada, alterado por ela.* |
* Isto permite acoplar outros métodos e propriedades à chamada de ::Exec()
Por exemplo, oRedisClient:Exec(cCommand, @outParm):lOk
testará se o comando foi bem sucedido, sem a necessidade de uma consulta à parte a ::lOk sobre o objeto oRedisClient.
Observações
- O número de parâmetros complementares é ao comando é praticamente ilimitado, suficiente para a imensa maioria das aplicações que usem Redis;
- Alguns comandos do Redis admitem parâmetros adicionais. Neste caso, para facilidade de programação, pode-se ter uma string de comando fixa (ou constante), com possibilidade de substituição por variáveis nos pontos onde for inserido um ponto de interrogação, o caractere ?
- O método
::
Exec()é muito semelhante em propósito ao método::Append(): ambos disparam a execução de comandos no servidor Redis.
- A maior diferença é que o programa que dispare
::
Exec()terá que aguardar seu término e receberá dele o resultado do comando, ao passo que
- isso não ocorre com
::Append
()
Isto torna
::Append() ideal para a programação assíncrona e concorrente, ao passo que- . Por isso
::Exec()fica limitado à programação sequencial e síncrona.
- Pontos importantes a serem observados:
- o resultado da função é passado para o parâmetro
retVal, que deve por isso ser passado por referência.
- o resultado da função é passado para o parâmetro
::Exec()também altera o estado do objeto sobre o qual é chamado. Por isso, também as propriedades do objeto terão que ser avaliadas
- depois da chamada ao método
::Exec();
- depois da chamada ao método
- o tipo de dados do resultado da chamada a
::Exec()vai variar de acordo com o comando executado. Por exemplo, o comandosetretorna valor lógico (.T.ou.F.), enquanto quegetretorna uma cadeia de caracteres. - O comando altera o estado da propriedade tRedisClient:lOk indicando se o comando foi executado corretamente ou com erro, e neste caso o número do erro é atualizado nas propriedades tRedisClient:nError e tRedisClient:cError.
Exemplos
Exemplo 1 - Emissão do comandoset para o servidor Redis
set| Toggle Cloak | ||
|---|---|---|
|
| Cloak |
|---|
Exemplo 2 - Emissão do comando set para o servidor Redis, parametrizado
| Toggle Cloak | ||
|---|---|---|
|
| Cloak |
|---|
Exemplo 3 - Emissão do comando get para o servidor Redis
| Toggle Cloak | ||
|---|---|---|
|
| Cloak |
|---|
Veja também
Exemplos
| Bloco de código | ||
|---|---|---|
| ||
#include 'protheus.ch'
User Function redisTst()
Local retVal := Nil
oRedisCli:= tRedisClient():New()
// Setup Redis connection
oRedisCli:Connect("tec-clima", 6379, "")
If oRedisClient:lConnected
// Set the field 'x' to the value 'aaa'
oRedisCli:Exec("set x aaa", @retVal)
ConOut("Result of Exec(): " + retVal)
VarInfo("State of the object: ", oRdClient)
oRdClient:Disconnect()
Return .T.
EndIf
Return .F. |
Veja também
Import HTML Content
Visão Geral
Conteúdo das Ferramentas