Changes for version 0.0.1 - 2026-08-19

  • FEATURE
    • Initial release.
    • Added PAGI::FastAPI::Queue::Driver::Redis, a Redis-backed storage driver for PAGI::FastAPI::Queue. Stores each topic as a Redis list (RPUSH to enqueue, LPOP to dequeue), so queued items are shared across every worker process and host pointed at the same Redis instance and key prefix.
    • Built on Async::Redis (Future::IO-based) rather than Net::Async::Redis, matching PAGI::FastAPI's own documented event-loop philosophy (Future::IO is the goal, IO::Async is an implementation detail).
    • Supports either an injected, pre-built client via the `redis` constructor option, or auto-construction from host/port/uri/ username/password/database options.
    • Connects lazily (on first use) and only once per driver instance; no network I/O happens in the constructor.
    • Aggregate size() (no topic given) walks the keyspace with Redis's non-blocking SCAN command and sums LLEN per matching key; documented as a best-effort, non-atomic snapshot.
    • Added disconnect(), a driver-specific extension (not part of the PAGI::FastAPI::Queue::Driver contract) for clean shutdown.
  • TESTS
    • Added t/00-load.t.
    • Added t/01-queue_driver_redis.t: full unit test suite (FIFO ordering, JSON round-tripping of refs/falsy values, prefix namespacing, per-topic and aggregate size, multi-page SCAN cursor handling, lazy/once-only connect, disconnect delegation), driven entirely by an injectable fake client (t/lib/Test/FakeAsyncRedis.pm) so the suite runs offline without a real Redis server or Async::Redis installed.
    • Added t/02-queue_driver_redis_live.t: optional integration test against a real Redis server, skipped unless both Async::Redis is installed and PAGI_TEST_REDIS=host:port is set.
  • DOCUMENTATION
    • Full POD for PAGI::FastAPI::Queue::Driver::Redis, including the Async::Redis-vs-Net::Async::Redis rationale and the SCAN-based aggregate size() caveat.

Documentation

Modules

Redis Storage Driver for PAGI::FastAPI::Queue