Async-Redis

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

    - 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

MANIFEST  view on Meta::CPAN

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 1.130 second using v1.01-cache-2.11-cpan-6aa56a78535 )