dgl / protocol-redis-xs

hiredis based parser compatible with Protocol::Redis
http://search.cpan.org/dist/Protocol-Redis-XS
Other
8 stars 5 forks source link

NAME Protocol::Redis::XS - hiredis based parser compatible with Protocol::Redis

SYNOPSIS use Protocol::Redis::XS; my $redis = Protocol::Redis::XS->new(api => 1); $redis->parse("+OK\r\n"); my $message = $redis->get_message;

  # create message
  print $redis->encode({type => '*', data => [
    {type => '$', data => 'string'},
    {type => '+', data => 'OK'},
  ]});

DESCRIPTION This provides a fast parser for the Redis protocol using the code from hiredis https://github.com/redis/hiredis and with API compatibility with Protocol::Redis.

(If you've found yourself here just looking to use Redis in Perl: This
is a low level parsing module, you probably want to look at the modules
mentioned in "SEE ALSO" first.)

METHODS As per Protocol::Redis, API version 1.

parse $redis->parse("*2\r\n$4ping\r\n\r\n");

Parse a chunk of data (calls "on_message" callback if defined and a
complete message is received).

get_message while (my $message = $redis->get_message) { ... }

Return a message. This is a potentially nested data structure, for
example as follows:

  {
    type => '*',
    data => [
      {
        type => '$',
        data => 'hello'
      }
    ]
  }

on_message $redis->onmessage(sub { my ($redis, $message) = @; ... });

Set callback for "parse".

encode my $string = $redis->encode({type => '*', data => [ {type => '+', data => 'test'}, {type => '$', data => 'test'}, ]});

Encode data into redis message.

THREADS This module will work on a threaded perl and will work with threads, however instances of Protocol::Redis should not be shared between threads.

SUPPORT IRC

redis on irc.perl.org irc://irc.perl.org/redis

DEVELOPMENT See github: https://github.com/dgl/protocol-redis-xs.

AUTHOR David Leadbeater dgl@dgl.cx

With thanks to Sergey Zasenko <undef@cpan.org> for the original
Protocol::Redis and defining the API.

COPYRIGHT AND LICENSE Copyright (C) 2011 David Leadbeater.

This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.

SEE ALSO Redis, Redis::hiredis, Mojo::Redis, AnyEvent::Redis, Protocol::Redis.