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:

  • Al definir un caché para un ambiente, se deben usar nombres de caché únicos en los proyectos para evitar la sobrescritura involuntaria de valores. 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.
  • Por defecto, WriteCache y ReadCache (combinadas) están limitadas a un máximo de 100 llamadas por minuto para una 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, era necesario que todas las operaciones relacionadas se realizaran dentro del mismo proyecto, lo que podía generar proyectos muy grandes. Al utilizar el almacenamiento en caché en la nube, ahora los proyectos grandes se pueden dividir en proyectos más pequeños, lo que permite un acceso a permisos más granular, así como la 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 Necesarios

  • 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 se especifica una caducidad no positiva, la caducidad del valor almacenado en caché será la caducidad desde la última escritura.
  • scope: Determina si el alcance de la memoria caché es para el proyecto actual. El alcance de la memoria caché puede ser cualquiera de los siguientes: "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 Necesarios

  • name: Hasta 256 caracteres.
  • value: No puede superar 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 memoria caché es para el proyecto actual. El alcance de la memoria caché puede ser cualquiera de los siguientes: "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 para el 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: Ámbito del 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");

Ejemplo 3: Sin Segundos de Caducidad 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: Utilizar Solo el Alcance

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

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

Ejemplo 5: Utilice Solo Segundos de Expiración

Este ejemplo especifica una expiración de 300 segundos. expiration_secondspuede ser una cadena vacía, un número negativo (como "-1"), o un número de segundos de 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");