Data-Chronicle
view release on metacpan or search on metacpan
Note that the value MUST be either hash-ref or array-ref.
$writer->set("category1", "name1", "value1");
$writer->set("category1", "name2", "value2", Date::Utility->new("2016-08-01 00:06:00"));
"mset" in Data::Chronicle::Writer
Given multiple categories, names and values atomically performs the set
operation on each corresponding category, name, value set.
$writer->mset([["category1", "name1", $value1], ["category2, "name2", $value2], ...]);
"get" in Data::Chronicle::Reader
Given a category and name returns the latest version of the data
according to current Redis cache
my $value1 = $reader->get("category1, "name1"); #value1
"mget" in Data::Chronicle::Reader
Given multiple categories and name atomically performs the get
operation on each corresponding category, name set.
my @values = $reader->mget([["category1", "name1"], ["category2", "name2"], ...])
"get_for" in Data::Chronicle::Reader
Given a category, name and timestamp returns version of data under
"category::name" as of the given date (using a DB lookup).
my $some_old_data = $reader->get_for("category1", "name2", Date::Utility->new("2016-08-01 00:06:00"));
"get_for_period" in Data::Chronicle::Reader
Given a category, name, start_timestamp and end_timestamp returns an
array-ref containing all data stored between given period for the given
"category::name" (using a DB lookup).
my $arrayref = $reader->get_for_period("category1", "name2", Date::Utility->new("2015-08-01 00:06:00"), Date::Utility->new("2015-08-01 00:06:00"));
"get_history" in Data::Chronicle::Reader
Given a category, name, and revision returns version of the data the
specified number of revisions in the past. If revision 0 is chosen, the
latest version of the data will be returned. If revision 1 is chosen,
the previous version of the data will be returned.
my $some_old_data = $reader->get_for("category1", "name2", 2);
"subscribe" in Data::Chronicle::Subscriber
Given a category, name, and callback assigns the callback to be called
when a new value is set for the specified category and name (if the
writer has publish_on_set enabled).
$subscriber->subscribe("category1", "name2", sub { print 'Hello World' });
"unsubscribe" in Data::Chronicle::Subscriber
Given a category, name, clears the callbacks associated with the
specified category and name.
$subscriber->unsubscribe("category1", "name2");
EXAMPLES
my $d = get_some_log_data();
my $chronicle_w = Data::Chronicle::Writer->new(
cache_writer => $writer,
dbic => $dbic);
my $chronicle_r = Data::Chronicle::Reader->new(
cache_reader => $reader,
dbic => $dbic);
#store data into Chronicle - each time we call `set` it will also store
#a copy of the data for historical data retrieval
$chronicle_w->set("log_files", "syslog", $d);
#retrieve latest data stored for syslog under log_files category
my $dt = $chronicle_r->get("log_files", "syslog");
#find historical data for `syslog` at given point in time
my $some_old_data = $chronicle_r->get_for("log_files", "syslog", $epoch1);
( run in 1.259 second using v1.01-cache-2.11-cpan-39bf76dae61 )