Async-Redis
view release on metacpan or search on metacpan
- Breaking: removed `install` option from define_command
- The option used to install the script as a method on the
Async::Redis class. Pass `install => 1` now dies with a clear
message pointing callers at run_script(); use that or hold
the returned Async::Redis::Script directly.
- Privacy: OTel command arguments no longer in spans by default
- otel_include_args now defaults to 0; pass 1 to re-enable
- Added: message_queue_depth constructor option (default 1)
- Added: key prefixing for PFADD, PFCOUNT, PFMERGE, GETBIT, SETBIT,
BITCOUNT, BITPOS, HSTRLEN, ZMSCORE
- Added: Async::Redis::Cookbook (POD) â runnable, tested recipes
for connection management, pipelines, transactions, pubsub,
pool, scripts, and observability.
- Added: examples/ â async job queue, bulk insert, and a stress
harness (examples/stress/) that drives all major features under
load with chaos injection (CLIENT KILL) and integrity verification.
- Added: GitHub Actions CI workflow (thanks @GaNardelli, PR #4)
runs the full test suite with RELEASE_TESTING=1 against a
Dockerized Redis on every push and pull request.
- Documentation: TASK LIFECYCLE POD section explaining the
Future::Selector contract; user-disconnect vs reader-fatal path
examples/stress/lib/Stress/Harness.pm
examples/stress/lib/Stress/Integrity.pm
examples/stress/lib/Stress/Metrics.pm
examples/stress/lib/Stress/Output.pm
examples/stress/lib/Stress/Workload.pm
examples/stress/reset-redis.sh
examples/stress/stress
lib/Async/Redis.pm
lib/Async/Redis/AutoPipeline.pm
lib/Async/Redis/Commands.pm
lib/Async/Redis/Cookbook.pod
lib/Async/Redis/Error.pm
lib/Async/Redis/Error/Connection.pm
lib/Async/Redis/Error/Disconnected.pm
lib/Async/Redis/Error/Protocol.pm
lib/Async/Redis/Error/Redis.pm
lib/Async/Redis/Error/Timeout.pm
lib/Async/Redis/Iterator.pm
lib/Async/Redis/KeyExtractor.pm
lib/Async/Redis/Pipeline.pm
lib/Async/Redis/Pool.pm
lib/Async/Redis.pm view on Meta::CPAN
=over 4
=item * L<Future::IO> - The underlying async I/O abstraction
=item * L<Future::AsyncAwait> - Async/await syntax support
=item * L<Async::Redis::Pool> - Connection pooling
=item * L<Async::Redis::Subscription> - PubSub subscriptions
=item * L<Async::Redis::Cookbook> - Practical usage recipes
=item * L<Redis> - Synchronous Redis client
=item * L<Net::Async::Redis> - Another async Redis client
=back
=head1 AUTHOR
John Napiorkowski
lib/Async/Redis/Cookbook.pod view on Meta::CPAN
=pod
=head1 NAME
Async::Redis::Cookbook - Practical Async::Redis recipes
=head1 SYNOPSIS
This cookbook shows small, copyable Async::Redis patterns. The examples are
written for use inside an C<async sub>:
=over 4
=item * C<$redis> is a connected L<Async::Redis> client.
t/00-pod/cookbook-examples.t view on Meta::CPAN
use strict;
use warnings;
use Test::Lib;
use Test::Async::Redis qw(run await_f skip_without_redis cleanup_keys redis_host redis_port with_timeout);
use Test2::V0;
use Future::AsyncAwait;
use Async::Redis;
my $cookbook = 'lib/Async/Redis/Cookbook.pod';
my @examples = _extract_cookbook_examples($cookbook);
my $janitor = skip_without_redis();
ok(@examples, 'found cookbook examples');
run { cleanup_keys($janitor, 'cookbook:*') };
for my $example (@examples) {
subtest $example->{name} => sub {
my $redis = Async::Redis->new(
host => redis_host(),
( run in 0.919 second using v1.01-cache-2.11-cpan-995e09ba956 )