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 |
Retorno
::Exec()
retorna o próprio objeto sobre o qual foi feita a chamada |
, alterado por ela.* |
*
com seu estado alterado pela chamada. Isto permite acoplar outros métodos e propriedades à chamada de ::Exec()
Por exemplo, oRedisCli oRedisClient:Exec(cCommand, @retVal@outParm):lOk
Parâmetros
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 ?
cCommand
retVal
- 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()
. 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.::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()
;
- o resultado da função é passado para o parâmetro
- o tipo de dados do resultado da chamada a
::Exec()
vai variar de acordo com o comando executado. - Por exemplo, o comando
set
retorna valor lógico (.T.
ou.F.
), enquanto queget
retorna 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 comando
set
para o servidor Redis
setToggle 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 |
---|
Exemplos
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include 'protheus.ch' User Function redisTst() Local retVal := Nil Local cCommand := '' oRedisCli:= tRedisClient():New() // Setup Redis connection oRedisCli:Connect("tec-clima", 6379, "") If .Not. oRedisClient:lConnected ConOut("Could not connect to Redis server") Return .F. EndIf // Set the field 'x' to the value 'aaa' cCommand := "set x aaa" oRedisCli:Exec(cCommand, @retVal) If .Not. oRedisClient:lOk ConOut("Could not Exec(" + cCommand + ")") ConOut("Exec() result: " + cValToChar(retVal)) VarInfo("State of object: ", oRedisCli) oRdClient:Disconnect() Return .F. EndIf ConOut("Successful Exec(" + cCommand + ")") ConOut("Result of Exec(): " + retVal) VarInfo("State of the object: ", oRedisClient) oRdClient:Disconnect() Return .T. |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas