Funções de Cache
Introdução
O cache na nuvem permite armazenar dados temporariamente na nuvem. O valor armazenado em cache fica visível para todas as operações em execução no mesmo escopo até que o cache expire, independentemente de como uma operação foi iniciada ou em qual agente uma operação é executada.
Ao armazenar dados em cache no Harmony, em vez de depender de armazenamentos de dados locais ou específicos do agente, os dados podem ser compartilhados entre operações separadas e entre projetos.
Antes de usar o ReadCache
ou WriteCache
funções (descritas abaixo), esteja ciente destas notas importantes:
- Ao definir um cache para um ambiente, nomes de cache exclusivos devem ser usados nos projetos para evitar a substituição involuntária de valores. Se a intenção for compartilhar dados entre projetos, será necessário compartilhar o mesmo nome de cache.
- Estas funções funcionam apenas durante o tempo de execução. Se tentar testar um script ou operação que inclua essas funções, serão gerados erros.
WriteCache
eReadCache
os valores não são acessíveis através do Management Console.- Por padrão,
WriteCache
eReadCache
(combinados) são limitados a um máximo de 100 chamadas por minuto para uma organização.
Exemplos usando ReadCache
e WriteCache
são abordados tanto nas funções individuais quanto nos Exemplos abaixo.
Casos de Uso
A seguir estão vários exemplos de casos de uso em que você pode querer usar o cache na nuvem:
- Suponha duas cadeias de operação, Chain A e Chain B, em um único projeto. Essas cadeias são executadas separadamente. Com um único agente, o armazenamento temporário pode ser compartilhado entre as cadeias. Mas em um ambiente de múltiplos agentes, o armazenamento temporário não pode ser usado, pois é local para o agente que executa uma operação e não para o projeto como um todo. Se o Agente 1 executar Chain A e o Agente 2 executar Chain B, os dados gerados por Chain A não estarão disponíveis para Chain B. Usar o cache na nuvem em vez do armazenamento temporário supera esse problema.
- Os dados podem ser compartilhados entre operações assíncronas dentro de um projeto.
- Erros gerados em diferentes operações podem ser armazenados em um cache comum. Ao acumular resultados operação dessa maneira, alertas mais abrangentes podem ser criados.
- Os tokens de login podem ser compartilhados entre operações.
WriteCache
eReadCache
funções podem ser usadas para compartilhar dados entre projetos. Antes que o cache em nuvem estivesse disponível, todas as operações relacionadas precisavam estar dentro do mesmo projeto, o que poderia levar a projetos muito grandes. Ao usar o cache em nuvem, projetos grandes agora podem ser divididos em projetos menores, o que permite acesso de permissões mais granulares, bem como compartimentalização de desenvolvimento e teste.
ReadCache
Declaração
type ReadCache(string name[, long expirationSeconds, string scope])
Sintaxe
ReadCache(<name>, <expirationSeconds>, <scope>)
Parâmetros Obrigatórios
name
: Até 256 caracteres.
Parâmetros Opcionais
expirationSeconds
: Número de segundos antes que o valor em cache expire. O padrão é 30 minutos (1800 segundos). O máximo é 30 dias (2592000 segundos). Quando usado paraReadCache
, o valor em cache expirará neste número de segundos após uma leitura bem-sucedida. Se nenhuma expiração ou uma expiração não positiva for especificada, então a expiração do valor em cache será a expiração da última gravação.scope
: Determina se o escopo do cache é para o projeto atual. O escopo do cache pode ser"project"
ou"environment"
. (As formas mais curtas"proj"
e"env"
também são aceitos.) O escopo padrão é"project"
se nenhum escopo ou uma string vazia for especificada. O valor armazenado em cache fica visível para todas as operações em execução no mesmo escopo até expirar, independentemente de como a operação foi iniciada ou em qual agente a operação é executada.
Descrição
Lê de um cache comum armazenado no Harmony.
Exemplos
// Read a cached value in the default scope (project)
myToken = ReadCache("authToken");
// Read a cached value in the "env" scope
myToken = ReadCache("authToken", "", "env");
// Read a cached value in the environment scope with a default timeout
lastTimeStamp = ReadCache("lastTimeStamp", -1, "env");
WriteCache
Declaração
void WriteCache(string name, type value[, long expirationSeconds, string scope])
Sintaxe
WriteCache(<name>, <value>, <expirationSeconds>, <scope>)
Parâmetros Obrigatórios
name
: Até 256 caracteres.value
: Não pode exceder 1MB.
Parâmetros Opcionais
expirationSeconds
: número de segundos antes que o valor armazenado em cache expire. O padrão é 30 minutos (1.800 segundos). O máximo é 30 dias (2.592.000 segundos). Se nenhuma expiração ou uma expiração não positiva for especificada, a expiração do valor armazenado em cache será renovada usando a expiração da última gravação. O tempo máximo de expiração permitido é definido pela sua organização e/ou Harmony.scope
: Determina se o escopo do cache é para o projeto atual. O escopo do cache pode ser"project"
ou"environment"
. (As formas mais curtas"proj"
e"env"
também são aceitos.) O escopo padrão é"project"
se nenhum escopo ou uma string vazia for especificada. O valor armazenado em cache fica visível para todas as operações em execução no mesmo escopo até expirar, independentemente de como a operação foi iniciada ou em qual agente a operação é executada.
Descrição
Grava em um cache comum armazenado no Harmony.
Aviso
O limite padrão de uso WriteCache
é um máximo de 100 chamadas por minuto por organização.
Exemplos
// Write a value to the cache in the default scope ("project")
WriteCache("authToken", myToken);
// Write a value (a timestamp using the Now() function)
// to the cache in the environment ("env") scope with a default timeout
WriteCache("lastTimeStamp", Now(), -1, "env");
// Writing a value without specifying an expiration or scope
// $authToken would be generated from a login operation
WriteCache("authToken", $authToken);
// Write a value to the cache in the "env" scope
// No expiration specified
WriteCache("City", "Houston", "", "env");
Exemplos
Exemplo 1: Escopo do Projeto
// Write a value to the cache in the default scope (project)
WriteCache("authToken", myToken);
// Read the cached value in the default scope (project)
myToken = ReadCache("authToken");
Exemplo 2: Escopo do Ambiente
// Write a value (a timestamp using the Now() function)
// to the cache in the environment ("env") scope with a default timeout
WriteCache("lastTimeStamp", Now(), -1, "env");
// Read the cached value in the environment scope with a default timeout
lastTimeStamp = ReadCache("lastTimeStamp", -1, "env");
Exemplo 3: Sem Segundos de Expiração Ou Escopo
// Writing a value without specifying an expiration or scope
// $authToken would be generated from a login operation
WriteCache("authToken", $authToken);
// Reading the cached value:
myToken = ReadCache("authToken");
Exemplo 4: Use Somente Escopo
Este exemplo inclui a especificação do ambiente no arquivo scope
parâmetro e definindo o tempo limite para uma string vazia. O expiration_seconds
pode ser uma string vazia, um número negativo (como "-1"
), ou um número de segundos até 30 dias (2592000 segundos).
// Writing specifying the environment only
WriteCache("City", "Houston", "", "env");
Exemplo 5: Use Apenas Segundos de Expiração
Este exemplo especifica uma expiração de 300 segundos. O expiration_seconds
pode ser uma string vazia, um número negativo (como "-1"
), ou um número de segundos até 30 dias (2592000 segundos).
// Writing specifying the expiration in seconds
WriteCache("City", "Houston", "300");
Leitura do valor em cache. O valor em cache será retornado somente se a chamada ocorrer dentro de 300 segundos da escrita; caso contrário, um valor nulo será retornado:
// Reading the cached value
city = ReadCache("City");