Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use 5.16.1;
- use strict;
- use warnings;
- use utf8;
- use open qw(:utf8);
- use Tag::DeCoder;
- use File::Slurp qw(read_file);
- use Benchmark qw(cmpthese);
- use JSON::XS;
- use Redis::Fast;
- my $redc = Redis::Fast->new;
- $ARGV[0] or die 'You must specify file name';
- my $json = read_file(shift);
- my $hsh = JSON::XS->new->decode( $json );
- cmpthese(10 => {
- 'set' => sub {
- $redc->multi;
- $redc->flushdb;
- $redc->set(
- $_->[0] => encodeByTag('CB' => $_->[1]),
- sub {}
- ) while @{$_} = each $hsh;
- $redc->wait_all_responses;
- $redc->exec;
- },
- 'hmset-fakey' => sub {
- $redc->multi;
- $redc->flushdb;
- $redc->hmset($_->[0], 'fakey' => encodeByTag('CB'=>$_->[1]), sub {})
- while @{$_} = each $hsh;
- $redc->wait_all_responses;
- $redc->exec;
- },
- 'hmset-true' => sub {
- $redc->multi;
- $redc->flushdb;
- while (my ($k, $v) = each $hsh) {
- $redc->hmset($k,
- ( map {
- my ($ki, $vi) = each $v;
- $ki => ref($vi)
- ? encodeByTag('CB' => $vi)
- : utf8::is_utf8($vi)
- ? do { utf8::encode($vi); $vi }
- : $vi
- } 1..keys $v ),
- sub {}
- )
- }
- $redc->wait_all_responses;
- $redc->exec;
- },
- });
Add Comment
Please, Sign In to add comment