{
  "product": "Specification (reference)",
  "title": "Cache Server",
  "summary": "In-memory key/value cache: eviction, expiry and what happens when it fills.",
  "category": "infra",
  "entries": [
    {
      "path": [
        "AI",
        "Basics",
        "Get, set and delete by key"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Basics",
        "Set with TTL, and TTL inspection"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Basics",
        "Atomic increment and decrement"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Basics",
        "Compare-and-set"
      ],
      "value": "",
      "status": "yes",
      "note": "for safe read-modify-write"
    },
    {
      "path": [
        "AI",
        "Basics",
        "Multi-get and pipelining"
      ],
      "value": "",
      "status": "yes",
      "note": "one round trip for many keys"
    },
    {
      "path": [
        "AI",
        "Expiry",
        "Lazy and active expiration"
      ],
      "value": "",
      "status": "yes",
      "note": "expired keys never returned"
    },
    {
      "path": [
        "AI",
        "Eviction",
        "Policy when memory is full"
      ],
      "value": "LRU, LFU, random, no-eviction",
      "status": "yes",
      "note": "stated, configurable"
    },
    {
      "path": [
        "AI",
        "Eviction",
        "Max memory limit enforced"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Data",
        "Values beyond strings"
      ],
      "value": "lists, sets, hashes, sorted sets",
      "status": "yes",
      "note": "or an explicit strings-only stance"
    },
    {
      "path": [
        "AI",
        "Concurrency",
        "Single-threaded or locked semantics documented"
      ],
      "value": "",
      "status": "yes",
      "note": "command atomicity"
    },
    {
      "path": [
        "AI",
        "Persistence",
        "Optional snapshot or append-only log"
      ],
      "value": "",
      "status": "yes",
      "note": "cache versus store distinction"
    },
    {
      "path": [
        "AI",
        "Distribution",
        "Client-side or server-side sharding"
      ],
      "value": "",
      "status": "yes",
      "note": "consistent hashing"
    },
    {
      "path": [
        "AI",
        "Distribution",
        "Replication and failover behaviour"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Patterns",
        "Pub/sub or key-change notification"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Operations",
        "Stats: hit rate, memory, connections, evictions"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Operations",
        "Slow-command log"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Safety",
        "Authentication and network binding defaults"
      ],
      "value": "",
      "status": "yes",
      "note": "not open to the internet by default"
    }
  ]
}
