Histórico da Página
Enfileira um comando na fila de comandos para serem processados pelo servidor Redis.
Sintaxe
Bloco de código |
---|
oRedisAfter := oRedisClient:Append(cCommand [, cParam1 [, cParameter cParam2 ... [, cParamN] ]) |
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência | Observações | |
---|---|---|---|---|---|---|
cCommand | Caracter | Comando a ser enfileirado | X | Pode conter ? que será preenchida por parâmetro | ||
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 | |||
cParamN | Caracter | Complemento do comando | Substituirá a n-ésima interrogação (ou ? ) | que houver no comandocCommand . |
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 ::Append()
Por exemplo, oRedisCli:
Append
(cCommand, @retVal):lOk
testará se o comando foi bem sucedido, sem a necessidade de uma consulta à parte a ::lOk
sobre o objeto oRedisClient
.
Observações
Alguns comandos 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 caracter ?::Append()
apenas enfileira comandos para processamento pelo servidor Redis. A resposta a eles deve ser obtida por chamadas
de- ao método
::GetReply()
- O método
::
ExecuteExec()
é muito semelhante em propósito ao método ::Append()
: ambos disparam a execução de comandos no servidor Redis.
- A maior diferença entre
::Append()
e ::Exec()
é que o programa que dispare ::Append()
poderá - não precisará aguardar
seu - o término de sua execução. E só receberá o resultado do comando quando executar o método
::GetReply()
.
Isto - O fato de não ser necessário acompanhar a execução do comando torna
::Append()
ideal para a programação assíncrona e concorrente do servidor Redis, ao passo que ::Exec()
fica limitado à programação sequencial e síncrona.
O método ::Append()
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 na propriedades tRedisClient:nError. O erro é então decodificado como texto legível por humanos na propriedade tRedisClient:cError.
::Append()
apenas enfileira comandos para processamento pelo servidor Redis. A resposta a eles deve ser obtida por chamadas ::GetReply()
::
Exec()
é muito semelhante em propósito ao método ::Append()
: ambos disparam a execução de comandos no servidor Redis. ::Append()
e ::Exec()
é que o programa que dispare ::Append()
::GetReply()
. ::Append()
ideal para a programação assíncrona e concorrente do servidor Redis, ao passo que ::Exec()
fica limitado à programação sequencial e síncrona.O método
::Append()
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 na propriedades tRedisClient:nError. O erro é então decodificado como texto legível por humanos na propriedade tRedisClient:cError.Exemplos
Exemplo 1 –
StringComando set
com string de comando
constante fixa
Toggle Cloak | ||
---|---|---|
|
Cloak |
---|
As chamadas a VarInfo() permitem conhecer o estado das propriedads do objeto
- Nesta listagem, são mostrados o estado das propriedades do objeto
oRedisClient
depois da chamada aos métodos
::Append()
eGetReply()
.
É interessante observar que:
- a propriedade
oRedisClient:nReplyType
é negativa depois da chamada do método::Append()
, indicando que este comando não teve uma resposta do servidor Redis a ser processada pelo cliente; - o resultado (output) da execução do comando
set x 'aaa'
, disparado por::Append()
e recebido por::GetReply()
, é.T.
, indicando que foi bem sucedida a atribuição da string'aaa'
ao campox
; - o tipo de resposta de
::GetReply()
é marcado como 5, indicando que é variável do tipo Status no contexto do Redis, ou lógica, no contexto do AdvPL.
- a propriedade
Exemplo 2 – Comando set
com string de comando parametrizada Toggle Cloak exclusive true
set
com string de comando parametrizada Toggle Cloak | ||
---|---|---|
|
Cloak |
---|
Este outro programa AdvPL é bastante similar ao anterior. Sua maior diferença é o fato de que a chamada ao comando
set
do AdvPL é parametrizada; ou seja: neste exemplo o comando Redis 'set x "aaa"
'
é quebrado em duas partes: 'set x ?' e "aaa"
.
A utilidade deste recurso é permitir que uma parte do comando possa ser mantida fixa, e que outras partes possam ser parametrizadas. Inclusive através de variáveis de programa, que podem ter seus valores obtidos por interação com o usuário, ou através de consulta a bases de dados.
Outro ponto interessante deste programa é o uso do comando 'get x'
, que recupera o resultado da atribuição ao campo x
neste caso confirma que o par 'set x
'e
"aaa"
de fato colocou o valor aaa
no campo x
.
Exemplo 2 – String de comando parametrizada Exemplo 3 – Comando mset
com string de comando parametrizada e múltiplos campos e valores
Toggle Cloak exclusive true
Cloakcpptrue
Nesta listagem são mostrados dois campos sendo afetados por um único comando, no qual os valores são passados como parâmetros. Um ponto importante é que para que os mesmos comandos set
e get
da listagem anterior possam lidar com múltiplos campos, eles devem ser prefixados por 'm'
e transformados em 'mset'
e 'mget'
.
O comando mset
do Redis trabalha de modo similar ao comando set
; isto é: devolve verdadeiro (ou .T.
) se todos campos foram atribuídos de modo corret, ou .F.
caso contrário). Contudo, o comando mget
retorna seu resultado como um vetor.
Import HTML Content
Visão Geral
Conteúdo das Ferramentas