Saltar al contenido

Funciones de Caché

Introducción

El almacenamiento en caché en la nube le permite almacenar datos temporalmente en la nube. El valor almacenado en caché es visible para todas las operaciones que se ejecutan en el mismo ámbito hasta que caduque la caché, independientemente de cómo se inició una operación o en qué agente se operación.

Al almacenar en caché los datos en Harmony, en lugar de depender de almacenes de datos locales o específicos de cada agente, los datos se pueden compartir entre operaciones independientes y entre proyectos.

Antes de usar cualquiera de los dos ReadCache o WriteCache funciones (descritas a continuación), tenga en cuenta estas notas importantes:

  • Si se define una caché para un ambiente, se debe tener cuidado de utilizar nombres de caché únicos en los proyectos para evitar la sobrescritura involuntaria de valores. Obviamente, si la intención es compartir datos entre proyectos, entonces es necesario compartir el mismo nombre de caché.
  • Estas funciones funcionan sólo durante el tiempo de ejecución. Si intenta probar un secuencia de comandos u operación que incluye estas funciones, se generarán errores.
  • WriteCache y ReadCache No se puede acceder a los valores a través de la Management Console.
  • El límite predeterminado de uso WriteCache es de un máximo de 100 llamadas por minuto por organización.

Ejemplos de uso ReadCache y WriteCache están cubiertos tanto dentro de las funciones individuales como en los Ejemplos abajo.

Casos de Uso

A continuación se muestran varios casos de uso de ejemplo en los que es posible que desee utilizar el almacenamiento en caché en la nube:

  • Suponer dos cadenas de operación, Cadena A y Cadena B, en un solo proyecto. Estas cadenas se ejecutan por separado. Con un único agente se puede compartir el almacenamiento temporal entre las cadenas. Pero en un ambiente de múltiples agentes, el almacenamiento temporal no se puede utilizar ya que es local para el agente que ejecuta una operación y no para el proyecto en su conjunto. Si el Agente 1 ejecuta la Chain A y el Agente 2 ejecuta la Chain B, entonces los datos generados por la Chain A no están disponibles para la Chain B. El uso del almacenamiento en caché en la nube en lugar del almacenamiento temporal soluciona este problema.
  • Los datos se pueden compartir entre operaciones asincrónicas dentro de un proyecto.
  • Los errores que se generan en diferentes operaciones podrían almacenarse en una caché común. Al acumular resultados de operación de esta manera, se pueden crear alertas más completas.
  • Los tokens de inicio de sesión se pueden compartir entre operaciones.
  • WriteCache y ReadCache Las funciones se pueden utilizar para compartir datos entre proyectos. Antes de que el almacenamiento en caché en la nube estuviera disponible, todas las operaciones relacionadas debían estar dentro del mismo proyecto, lo que podía dar lugar a proyectos muy grandes. Al utilizar el almacenamiento en caché en la nube, los proyectos grandes ahora se pueden dividir en proyectos más pequeños, lo que permite un acceso a permisos más granular, así como una compartimentación del desarrollo y las pruebas.

ReadCache

Declaración

type ReadCache(string name[, long expirationSeconds, string scope])

Sintaxis

ReadCache(<name>, <expirationSeconds>, <scope>)

Parámetros Requeridos

  • name: Hasta 256 caracteres.

Parámetros Opcionales

  • expirationSeconds: Número de segundos antes de que caduque el valor almacenado en caché. El valor predeterminado es 30 minutos (1800 segundos). El máximo es 30 días (2592000 segundos). Cuando se utiliza para ReadCache, el valor almacenado en caché caducará en esta cantidad de segundos después de una lectura exitosa. Si no se especifica ninguna caducidad o una caducidad no positiva, entonces la caducidad del valor almacenado en caché será la caducidad de la última escritura.
  • scope: Determina si el alcance de la caché es para el proyecto actual. El alcance del caché puede ser "project" o "environment". (Las formas más cortas "proj" y "env" También se aceptan.) El alcance predeterminado es "project" si no se especifica ningún ámbito o se especifica una cadena vacía. El valor almacenado en caché es visible para todas las operaciones que se ejecutan en el mismo ámbito hasta que caduque, independientemente de cómo se inició esa operación o en qué agente se operación.

Descripción

Lee desde un caché común almacenado en Harmony.

Ejemplos

// 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

Declaración

void WriteCache(string name, type value[, long expirationSeconds, string scope])

Sintaxis

WriteCache(<name>, <value>, <expirationSeconds>, <scope>)

Parámetros Requeridos

  • name: Hasta 256 caracteres.
  • value: No puede exceder 1 MB.

Parámetros Opcionales

  • expirationSeconds: Número de segundos antes de que caduque el valor almacenado en caché. El valor predeterminado es 30 minutos (1800 segundos). El máximo es 30 días (2592000 segundos). Si no se especifica ninguna caducidad o una caducidad no positiva, la caducidad del valor almacenado en caché se renovará utilizando la caducidad de la última escritura. El tiempo de vencimiento máximo permitido lo establece su organización y/o Harmony.
  • scope: Determina si el alcance de la caché es para el proyecto actual. El alcance del caché puede ser "project" o "environment". (Las formas más cortas "proj" y "env" También se aceptan.) El alcance predeterminado es "project" si no se especifica ningún ámbito o se especifica una cadena vacía. El valor almacenado en caché es visible para todas las operaciones que se ejecutan en el mismo ámbito hasta que caduque, independientemente de cómo se inició esa operación o en qué agente se operación.

Descripción

Escribe en una caché común almacenada en Harmony.

Advertencia

El límite predeterminado de uso WriteCache es un máximo de 100 llamadas por minuto por organización.

Ejemplos

// 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");

Ejemplos

Ejemplo 1: Alcance del Proyecto

// 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");

Ejemplo 2: Alcance Ambiental

// 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");

Ejemplo 3: Sin Segundos de Vencimiento Ni Alcance

// 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");

Ejemplo 4: Usar Solo Alcance

Este ejemplo incluye especificar el ambiente en el scope parámetro y establecer el tiempo de espera en una cadena vacía. El expiration_seconds puede ser una cadena vacía, un número negativo (como "-1"), o una cantidad de segundos hasta 30 días (2592000 segundos).

// Writing specifying the environment only
WriteCache("City", "Houston", "", "env");

Ejemplo 5: Utilizar Únicamente Segundos de Caducidad

Este ejemplo especifica una caducidad de 300 segundos. El expiration_seconds puede ser una cadena vacía, un número negativo (como "-1"), o una cantidad de segundos hasta 30 días (2592000 segundos).

// Writing specifying the expiration in seconds
WriteCache("City", "Houston", "300");

Lectura del valor almacenado en caché. El valor almacenado en caché se devolverá solo si la llamada se realiza dentro de los 300 segundos posteriores a la escritura; de lo contrario, se devolverá un valor nulo:

// Reading the cached value
city = ReadCache("City");