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