webman/redis
Redis client for the webman framework, providing connection pooling and coroutine-safe access through ext-redis or Predis. Supports multiple connections, cluster and sentinel setups, lazy connections, and an expressive API for caching, queues, pub/sub and other common Redis workloads.
Architecture fit — low for a Laravel stack, high only inside webman. webman/redis is the Redis component for webman, the Workerman-based resident-memory PHP framework — not a Laravel package. It has no ServiceProvider, no facade, no config/redis.php contract, and no integration with Laravel's RedisManager, Horizon, or queue/broadcast/Session drivers. It appears to sit on top of illuminate/redis (the same reuse pattern webman uses for illuminate/database), adapted to webman's process model and lifecycle. That means the underlying client is familiar, but the wiring, config surface, and connection lifecycle are webman-specific.
Integration feasibility. In a Laravel service: not feasible without writing an adapter, and there is no reason to — Laravel's native predis/phpredis path is first-party, documented, and battle-tested. In a webman service: high feasibility; this is the canonical component and adoption is a config change plus a Composer require. The realistic decision is therefore "adopt if and only if the target runtime is webman," not "evaluate as a Laravel dependency."
Technical risk — concentrated in provenance and validation, not code.
webman-php GitHub org under the webman/redis Packagist name; this repository shows 1 star and 0 dependents, which is inconsistent with the official component's visibility. Confirm the Packagist vendor entry, the composer.json name/homepage, and commit history before adding it to any lockfile.CLUSTER/MOVED redirects, Sentinel failover, TLS, and reconnect-after-idle have not been exercised across many environments. In a resident-memory runtime, those are exactly the paths that break silently.Key questions for the maintainer/team:
ext-redis (phpredis), predis, or both — and does it support connection pooling under webman/connection-pool?Stack fit. Gate on runtime first: webman services → in-scope; Laravel/Symfony services → out of scope, use the framework's native Redis layer. Do not introduce a second Redis client into a Laravel service to "standardize" — the operational cost of dual clients (two config surfaces, two failure modes, two upgrade paths) exceeds any consistency gain.
Migration path (webman target only).
redis-cli CLIENT KILL to observe reconnect behavior.phpredis and predis across services creates TLS and cluster-behavior drift that surfaces during incidents.CacheClient/QueueClient interface in front of the package so a swap back to raw illuminate/redis or a fork is a one-file change.composer.lock with a documented upgrade ritual; do not float ^.Compatibility checks before commit.
illuminate/redis version constraint — if it collides with a Laravel package elsewhere in a monorepo, resolve at the workspace level.ext-redis vs predis parity for the commands you actually use.maxclients on the Redis side.Sequencing. Non-production spike → one low-traffic internal service → one production-facing service with a Redis failover drill → wider rollout. Do not make this the first Redis component in a greenfield service without a rollback path to raw illuminate/redis.
Maintenance. Low ongoing effort if pinned and wrapped; the risk is a silent gap in releases rather than churn. Budget a standing ~quarterly review: upstream diff, compatibility with the current Workerman/PHP version, and a decision to stay, fork, or migrate. Maintain an internal fork under webman-php/redis upstream so continuity is not contingent on one individual.
Support. No commercial backing; MIT with community-only channels. Escalation path is "read the wrapper source," which — for a package this thin — is viable, but it means your team owns the debugging, not the vendor. Ensure at least one engineer can read the underlying illuminate/redis connector.
Scaling. The scaling model is process-local: each Workerman worker holds its own connections, so total Redis connections ≈ worker_count × pool_size per node, multiplied across the fleet. Size the pool deliberately and watch maxclients during horizontal scaling — this is the most common self-inflicted outage with resident-memory Redis clients. Because workers are long-lived, connection leaks and memory growth accumulate rather than reset per request; instrument per-worker connection counts.
Failure modes to design for.
PING-based health check.BLPOP/BRPOP or a synchronous large KEYS/SMEMBERS stalls every request in that worker. Enforce timeouts and forbid blocking commands outside dedicated consumer processes.MOVED/ASK) unhandled in the wrapped client path.Ramp-up. Near-zero for engineers already on webman. For a Laravel-centric team it is a genuine context switch: no facades, no Redis::connection() shorthand in the familiar form, resident-memory lifecycle, and explicit pool semantics. Budget a day of pairing plus the spike above.
Recommendation. Treat this as a framework-component adoption decision, not a library evaluation. Proceed only if the service runs webman, and only after provenance verification and a failover spike; otherwise close it out and use the framework-native Redis path. The 8.6 technical score and 52.95 opportunity score should be read as "reasonable code, unproven artifact" — the gap between those numbers and 1 star / 0 dependents is the entire risk.
How can I help you explore Laravel packages today?