Daten am Edge speichern

IMPORTANT
AEM Edge Functions befindet sich derzeit in der Beta-Phase. Funktionen und Dokumentation können sich ändern. Wenden Sie sich für Feedback an aemcs-edgecompute-feedback@adobe.com.
NOTE
Konfigurations-, Geheimnis- und KV-Speicher sind in Sandbox-Programmen nicht verfügbar. Verwenden Sie eine Nicht-Sandbox-Umgebung oder eine RDE, um einen KV-Speicher zu testen.

Eine AEM Edge-Funktion muss Daten häufig am Edge nahe bei Ihren Besuchern aufbewahren und über Funktionsaufrufe hinweg wiederverwenden, ohne dass ein Roundtrip zum Ursprung erforderlich ist. AEM Edge-Funktionen bieten diesen Edge-Datenspeicher über einen KV-Speicher.

Ein KV-Speicher ist ein Schlüssel-Wert-Speicher, den Sie zur Laufzeit lesen und schreiben können. Die Daten bleiben zwischen den Funktionsaufrufen erhalten, sodass jeder Teil Ihres AEM Edge-Funktionscodes lesen kann, was ein anderer Teil zuvor geschrieben hat. Verwenden Sie ihn, um berechnete Ergebnisse zwischenzuspeichern, Umleitungszuordnungen zu speichern oder Daten anforderungsübergreifend freizugeben.

Verwendung eines KV-Speichers

Im Gegensatz zu configs, die Sie zur Bereitstellungszeit festlegen und nur lesen, wird ein KV-Speicher zur Laufzeit gelesen und geschrieben. Für Ihre AEM Edge-Funktion wird ein kv_default bereitgestellt, und alle zugehörigen Module oder Endpunkte können sie lesen und schreiben.

configs
KV-Speicher
Zugriff
Zur Laufzeit schreibgeschützt
Lesen und Schreiben zur Laufzeit
Festgelegt durch
Zum Zeitpunkt der Bereitstellung in edgeFunctions.yaml
Ihr Funktionscode zur Laufzeit
Name speichern
config_default
kv_default
Verwenden von für
Statische Umgebungseinstellungen
Daten, die sich zur Laufzeit ändern

KV-Speicher aktivieren

Legen Sie kvs: true unter data in edgeFunctions.yaml als gleichrangiges Element von functions fest. Dieser eine Umschalter stellt den kv_default für die AEM Edge-Funktion bereit.

# config/edgeFunctions.yaml
kind: "EdgeFunctions"
version: "1"
data:
  functions:
    - name: my-edge-function
  kvs: true # enable the KV store

Stellen Sie die aktualisierte Konfiguration über die Cloud Manager-Konfigurations-Pipeline oder mit aio aem rde:install -t env-config ./config in einer RDE bereit. Weitere Informationen finden ​ unter „Einrichten von AEM Edge-Funktionen in ​" oder Einrichten von AEM Edge-Funktionen in ​".

Lesen und Schreiben in Code

Öffnen Sie den kv_default Store, rufen Sie dann get(key) an und put(key, value, options?) Sie. Beide Aufrufe sind asynchron. Werte werden als Zeichenfolgen gespeichert, sodass Objekte beim Schreiben mit JSON.stringify() serialisiert werden. Beim Lesen macht der von get(key) zurückgegebene Eintrag text(), json() und arrayBuffer() verfügbar. Rufen Sie daher entry.json() auf, um ein gespeichertes -Objekt zu analysieren.

// src/index.js or handler file
import { KVStore } from "fastly:kv-store";

// open the KV store
const kv = new KVStore("kv_default");

// write a value (serialize objects to a string)
await kv.put("greeting", JSON.stringify({ text: "Hello from the edge" }));

// read a value (get returns an entry, or null when the key is missing)
const entry = await kv.get("greeting");
const value = entry ? await entry.json() : null;

Daten mit einem KV-Speicher zwischenspeichern

Ein gängiges Muster ist die Cache-Beibehaltung. Der Handler liest zuerst aus dem KV-Speicher und ruft das Backend nur bei einem Fehlschlag auf. Übergeben Sie eine ttl (in Sekunden) an put() und der Store läuft für Sie ab, sodass Sie den Ablauf nicht selbst verfolgen.

// src/lib/cache.js
import { KVStore } from "fastly:kv-store";

const kv = new KVStore("kv_default");

// Read a cached value, or null when the key is missing or expired
export async function getCached(key) {
  const entry = await kv.get(key);
  return entry ? await entry.json() : null;
}

// Cache a value; the store expires it after ttlSeconds
export async function setCached(key, payload, ttlSeconds) {
  await kv.put(key, JSON.stringify(payload), { ttl: ttlSeconds });
}

Lesen Sie in einem Handler den Cache, kehren Sie bei einem Fehler zum Backend zurück und schreiben Sie dann das Ergebnis zurück.

let data = await getCached("inventory:west");
if (!data) {
  data = await fetchFromBackend();
  await setCached("inventory:west", data, 60); // store expires the entry after 60 seconds
}

Befüllen des KV-Speichers

Der KV-Speicher verfügt über kein Seeding während der Bereitstellung in edgeFunctions.yaml. Ihr Funktionscode schreibt jeden Wert zur Laufzeit. Zwei gemeinsame Ansätze sind:

  • On-Demand. Füllen Sie einen Eintrag aus, wenn er zum ersten Mal angefordert wird, wie beim obigen Muster für die Cache-Beibehaltung.
  • Über einen Wartungsendpunkt. Zeigen Sie einen Endpunkt an, der Einträge neu erstellt, und rufen Sie ihn dann nach einem Zeitplan auf. Dies eignet sich für große, sich langsam ändernde Datensätze wie Umleitungskarten.

Richtlinien

  • Aktivieren Sie den Store mit kvs: true, bevor Ihr Code ihn liest oder in ihn schreibt.
  • Der Store wird von allen AEM Edge-Funktions-Codes gemeinsam genutzt. Benennen Sie Ihre Schlüssel mit einem Präfix, z. B. redirect: oder inventory:, damit verschiedene Module oder Endpunkte nicht kollidieren.
  • Bei Schlüsselnamen wird zwischen Groß- und Kleinschreibung unterschieden.
  • Werte sind Zeichenfolgen. Serialisieren Sie Objekte mit JSON.stringify() und analysieren Sie sie beim Lesen.
  • Verarbeiten Sie einen fehlenden Schlüssel. get() gibt null zurück, wenn der Schlüssel nicht vorhanden ist.
  • Ein KV-Speicher ist schließlich konsistent. Direkt nach einem Schreibvorgang kann ein Lesevorgang den vorherigen Wert kurz zurückgeben, sodass eine Abhängigkeit von Lese-nach-Schreibvorgang für kritische Logik vermieden wird.

Vollständiges Beispiel

Das Repository AEM Edge Functions Examples enthält ein KV-Speicherbeispiel mit vollständiger config/ und Code:

Beispiel
Repository
Was es zeigt
Map-Suche umleiten
publish-delivery-redirect-maps
Liest zur Anforderungszeit Umleitungsziele aus dem KV-Speicher aus, erstellt freigegebene Zuordnungseinträge über einen Wartungsendpunkt neu und fällt bei einem Fehler auf den Ursprung zurück.

Zusätzliche Ressourcen

recommendation-more-help
experience-manager-learn-help-cloud-service