NAME

Redis::AOF::Tail::File - Read redis aof file in realtime

SYNOPSIS

use Redis::AOF::Tail::File;

my $aof_file = "/var/redis/appendonly.aof";
my $redis_aof = Redis::AOF::Tail::File->new(aof_filename => $aof_file);
while (my $cmd = $redis_aof->read_command)
{
  print "[$cmd]\n";
}

DESCRIPTION

This extension can be used for synchronous data asynchronously from redis to MySQL. Maybe you can code like below.

use DBI;
use Redis::AOF::Tail::File;
use Storable qw(retrieve store);

# variables in this comment should be defined
# $data_source, $username, $auth, \%attr, 
# some_func_translate_redis_command_to_sql()

my $dbh = DBI->connect($data_source, $username, $auth, \%attr);
my $aof_file       = "/var/redis/appendonly.aof";
my $seek_stor_file = "/var/redis/seek_stor_file";
my $aof_seek_pos = 'eof';
$aof_seek_pos = ${retrieve $seek_stor_file} if -s $seek_stor_file;

my $redis_aof = Redis::AOF::Tail::File->new(aof_filename => $aof_file, seekpos => $aof_seek_pos);
while (my ($pos, $cmd) = $redis_aof->read_command)
{
  my $sql = some_func_translate_redis_command_to_sql($cmd);
  store \$pos, $seek_stor_file if $dbh->do($sql);
}

METHODS

new()

There are two forms of new().

1.Normal form.

my $redis_aof = Redis::AOF::Tail::File->new(aof_filename => $aof_file);

2.Read from the seekpos.

my $redis_aof = Redis::AOF::Tail::File->new(aof_filename => $aof_file, seekpos => $aof_seek_pos);

read_command()

There are two forms of this method is called.

1. my $cmd = $redis_aof->read_command()

you got the redis command in $cmd.

2. my ($pos, $cmd) = $redis_aof->read_command().

you got redis command in $cmd, and read position in $pos.

EXPORT

None by default.

SEE ALSO

Redis::Term, Redis

AUTHOR

Chen Gang, <yikuyiku.com@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2014 by Chen Gang

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.16.2 or, at your option, any later version of Perl 5 you may have available.