openova/platform/valkey/README.md
hatiyildiz b2173ae13c docs(pass-60): valkey REPLICAOF bash example carry-over; NAMING fourth-cycle stable
FIRST drift in the new cycle. 6-consecutive-clean streak (54-59) ends
at Pass 60. However, drift is Pass-35 carry-over, not new architectural
drift — same "incomplete in-file fix" pattern as Pass 31 (openbao
L108 vs L127).

platform/valkey/README.md L79 had:
  REPLICAOF primary-valkey.region1.svc.cluster.local 6379

Pass 35 fixed L147 (StatefulSet --replicaof argument) to canonical
valkey.<env>.<sovereign-domain> per NAMING §5.2 but the bash command
example at L79 retained the older non-canonical form.

Fixed L79 to valkey.<env>.<sovereign-domain> matching L147.

Methodology lesson #18: Pass-N sweep grep patterns can miss carry-over
drift that doesn't match the sweep's specific shape. Pass 35 grep
targeted <domain> placeholders; L79 used a fully-qualified hostname
with no placeholder, evading the sweep.

NAMING-CONVENTION fourth-cycle deep re-read confirmed stable across
§1-§11. §4.1 "hfrp" location-code example is for rtz cluster (vs hfmp
for mgt) — both valid for different cluster types, not drift. §11
already settled across Pass 37, 42, 50.

valkey README banner explicitly establishes "NOT a Catalyst
control-plane component" (Pass 26 framing) — exemplary canonical.

Convergence: Pass 54-59 = 6 consecutive cleans (nirvana approach met).
Pass 60 carry-over fix resets streak but architectural integrity holds.
The new cycle audit is doing its job — surfacing carry-over drift the
old cycle's specific-shape sweeps missed.
2026-04-28 01:28:00 +02:00

4.4 KiB

Valkey

Redis-compatible in-memory cache. Application Blueprint (see docs/PLATFORM-TECH-STACK.md §4.1 — Data services).

Important: Valkey is NOT a Catalyst control-plane component. The Catalyst control plane uses NATS JetStream KV for its own pub/sub + KV needs (see docs/ARCHITECTURE.md §5 and docs/GLOSSARY.mdevent-spine). Valkey is purely an Application-tier cache for Apps that want Redis-compatible caching. The same upstream technology can serve in multiple categories (per PLATFORM-TECH-STACK §1) — Valkey is on the Application side of that split.

Replication via REPLICAOF (per Application's choice; see docs/SRE.md §2.5).

Status: Accepted | Updated: 2026-04-27


Overview

Valkey provides in-memory caching for sessions, rate limiting, and ephemeral data with multi-region replication support.

As an OSS support provider, OpenOva requires truly open-source components:

  • Redis OSS: RSALv2 + SSPL license (since March 2024) - not open source
  • Dragonfly: BSL 1.1 license - not open source
  • Valkey: BSD-3 license - truly open source

Why Valkey

Factor Valkey
License BSD-3 (truly open source)
Governance Linux Foundation
Backing AWS, Google, Oracle, Ericsson, Snap
Origin Fork of Redis 7.2.4
Compatibility 100% Redis API compatible
DR Strategy REPLICAOF (same as Redis)

Architecture

Single Region

flowchart TB
    subgraph Cluster["Valkey Cluster"]
        VK1[Valkey 1]
        VK2[Valkey 2]
        VK3[Valkey 3]
    end

    App[Applications] --> VK1
    App --> VK2
    App --> VK3

Multi-Region DR

flowchart TB
    subgraph Region1["Region 1 (Primary)"]
        VK1[Valkey Primary]
    end

    subgraph Region2["Region 2 (DR)"]
        VK2[Valkey Replica]
    end

    VK1 -->|"REPLICAOF"| VK2
    App1[Apps R1] --> VK1
    App2[Apps R2] --> VK2

DR Strategy: REPLICAOF

Valkey supports Redis REPLICAOF for async replication:

# On DR region Valkey
REPLICAOF valkey.<env>.<sovereign-domain> 6379

# Promote DR to primary (failover)
REPLICAOF NO ONE
Aspect Value
Replication Asynchronous
Lag Milliseconds to seconds
Consistency Eventual
Failover Manual promotion

Configuration

Primary Region

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: valkey
  namespace: databases
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: valkey
          image: valkey/valkey:8-alpine
          args:
            - --requirepass
            - $(VALKEY_PASSWORD)
            - --maxmemory
            - 2gb
          ports:
            - containerPort: 6379
          env:
            - name: VALKEY_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: valkey-credentials
                  key: password

DR Region (Replica)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: valkey
  namespace: databases
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: valkey
          image: valkey/valkey:8-alpine
          args:
            - --requirepass
            - $(VALKEY_PASSWORD)
            - --maxmemory
            - 2gb
            - --replicaof
            - valkey.<env>.<sovereign-domain>
            - "6379"
            - --masterauth
            - $(MASTER_PASSWORD)

Use Cases

Use Case TTL Eviction DR Needed
Session cache 24h LRU Yes
Rate limiting 1m Fixed No (local)
API cache 5m LRU Optional
Feature flags 1m LRU Yes

Monitoring

Metric Description
valkey_connected_replicas Number of connected replicas
valkey_replication_lag Replication lag in bytes
valkey_used_memory Memory usage
valkey_commands_processed_total Total commands processed

Migration from Redis/Dragonfly

Valkey is a drop-in replacement:

  1. No application changes - Same Redis protocol
  2. Same client libraries - Redis clients work unchanged
  3. Same commands - Full Redis command compatibility
  4. Same REPLICAOF - Identical DR pattern

Part of OpenOva