package Plack::Middleware::Profiler::KYTProf::Profile::KVS; use strict; use warnings; sub load { my $class = shift; $class->_add_kvs_profs; } sub _add_kvs_profs { my $class = shift; $class->_add_redis_prof; } sub _add_redis_prof { my $class = shift; for my $method ( qw/ set get incr decr exists del type rpush lpush llen lrange ltrim lindex lset lrem lpop rpop sadd scard sismember smembers spop srem sort / ) { Devel::KYTProf->add_prof( 'Redis', $method, sub { my ( $orig, $self, $key ) = @_; return sprintf '%s %s', $method, $key; } ); } for my $method_multi (qw/ mget /) { Devel::KYTProf->add_prof( 'Redis', $method_multi, sub { my ( $orig, $self, @args ) = @_; if ( ref $args[0] eq 'ARRAY' ) { return sprintf '%s %s', $method_multi, join( ', ', map { $_->[0] } @args ); } else { return sprintf '%s %s', $method_multi, join( ', ', map { ref($_) eq 'ARRAY' ? join( ', ', @$_ ) : $_ } @args ); } } ); } } 1;