Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 50 Próxima »

Enfileira um comando na fila de comandos para serem processados pelo servidor Redis.

Sintaxe

oRedisAfter := oRedisClient:Append(cCommand)

Parâmetros

NomeTipoDescriçãoObrigatórioReferênciaObservações
cCommand
Caracter

Comando a ser enfileirado

X
Pode conter ? que será preenchida por parâmetro

Retorno

NomeTipoDescriçãoObservações
oRedisAfter
objeto tRedisClientCó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

::Append() apenas enfileira comandos para processamento pelo servidor Redis. A resposta a eles deve ser obtida por chamadas de ::GetReply()

O método ::Execute() é 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 ::Append() poderá não aguardar seu término. E só receberá o resultado do comando quando executar o método ::GetReply()

Isto 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.

Exemplos

Exemplo 1 – Comando set com String de comando constante

Nesta listagem, as chamadas a VarInfo() permitem conhecer o estado das propriedades do objeto oRedisClient depois da chamada aos métodos,  e o resultado da chamada a GetReply().

É 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 campo x;
  • 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.

Exemplo 2 – Comando set com String de comando parametrizada

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: 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 3 – Comando mset com String de comando parametrizada e múltiplos campos e valores

Nesta listagem veem se dois campos sendo afetados por um único comando, no qual os valores são passados como parâmetros. Um ponto importante é que os mesmos comandos set e get da listagem anterior para lidarem com múltiplos campos são prefixados por 'm' e transformados em 'mset' e 'mget'.

O comando mset do Redis trabalha analogamente ao comando set, mas o comando mget retorna seu resultado como um vetor.

  • Sem rótulos