NAME
Protocol::Redis - Redis protocol parser/encoder with asynchronous capabilities.
SYNOPSIS
use
Protocol::Redis;
my
$redis
= Protocol::Redis->new(
api
=> 1);
$redis
->parse(
"+foo\r\n"
);
# get parsed message
my
$message
=
$redis
->get_message;
"parsed message: "
,
$message
->{data},
"\n"
;
# asynchronous parsing interface
$redis
->on_message(
sub
{
my
(
$redis
,
$message
) =
@_
;
"parsed message: "
,
$message
->{data},
"\n"
;
});
# parse pipelined message
$redis
->parse(
"+bar\r\n-error\r\n"
);
# create message
"Get key message:\n"
,
$redis
->encode({
type
=>
'*'
,
data
=> [
{
type
=>
'$'
,
data
=>
'string'
},
{
type
=>
'+'
,
data
=>
'OK'
}
]});
DESCRIPTION
Redis protocol parser/encoder with asynchronous capabilities and pipelining support.
APIv1
Protocol::Redis APIv1 uses "Unified Request Protocol" for message encoding/parsing and supports methods described further. Client libraries should specify API version during Protocol::Redis construction.
new
my
$redis
= Protocol::Redis->new(
api
=> 1);
Construct Protocol::Redis object with specific API version support. If specified API version not supported constructor should raise an exception. Client libraries should always specify API version.
parse
$redis
->parse(
"*2\r\n$4ping\r\n\r\n"
);
Parse Redis protocol chunk.
get_message
while
(
my
$message
=
$redis
->get_message) {
...
}
Get parsed message or undef.
on_message
$redis
->on_message(
sub
{
my
(
$redis
,
$message
) =
@_
;
}
Calls callback on each parsed message.
encode
my
$string
=
$redis
->encode({
type
=>
'+'
,
data
=>
'test'
});
$string
=
$redis
->encode(
{
type
=>
'*'
,
data
=> [
{
type
=>
'$'
,
data
=>
'test'
}]});
Encode data into redis message.
api
my
$api_version
=
$redis
->api;
Get API version.
SUPPORT
IRC
#redis on irc.perl.org
DEVELOPMENT
Repository
AUTHOR
Serhii Zasenko, undef@cpan.org
.
CREDITS
In alphabetical order
Dan Book (Grinnz)
David Leadbeater (dgl)
Jan Henning Thorsen (jhthorsen)
Viacheslav Tykhanovskyi (vti)
Yaroslav Korshak (yko)
COPYRIGHT AND LICENSE
Copyright (C) 2011-2024, Serhii Zasenko.
This program is free software, you can redistribute it and/or modify it under the same terms as Perl 5.10.