diff options
Diffstat (limited to 'kvrocks_filler')
| -rwxr-xr-x | kvrocks_filler/filler.pl | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/kvrocks_filler/filler.pl b/kvrocks_filler/filler.pl new file mode 100755 index 0000000..2efdc23 --- /dev/null +++ b/kvrocks_filler/filler.pl @@ -0,0 +1,75 @@ +#!/usr/bin/perl +use IO::Socket; + +print( "Connecting..\n" ); + +my $sck = IO::Socket->new( + "PeerHost" => "127.0.0.1", + "PeerPort" => 6000, + "Blocking" => 1, + "Proto" => "tcp", + "Domain" => IO::Socket::AF_INET, + "Type" => IO::Socket::SOCK_STREAM +) or die "Failed to create socket"; + +print( "Connected\n" ); + +my @chars = split( / /, "q w e r t y i o p a s d f g h j k l z x c v b n m" ); +my $jlen = scalar( @chars ); + +srand(); + +my $junk = ""; + +sub gen_junk{ + $junk = ""; + for ( my $jc = 0; $jc < 100; $jc++ ){ + $junk .= $chars[rand($jlen)]; + } + return $junk; +} + +my $kname = ""; + +sub gen_key_name{ + $kname = ""; + for ( my $kchars = 0; $kchars < 20; $kchars++ ){ + $kname .= $chars[rand($jlen)]; + } + return $kname; +} + +sub kv_add{ + print( "Command:\n*3\r\n\$3\r\nset\r\n\$".length($_[0])."\r\n".$_[0]."\r\n\$".length($_[1])."\r\n".$_[1]."\r\n" ); + $sck->send( "*3\r\n\$3\r\nset\r\n\$".length($_[0])."\r\n".$_[0]."\r\n\$".length($_[1])."\r\n".$_[1]."\r\n" ) or die "Failed to add key"; +} + +sub start_multi{ + $sck->send( "MULTI\r\n" ) or die "Failed to start multi"; + return; +} + +sub end_multi{ + $sck->send( "EXEC\r\n" ); + return; +} + +print( "Adding keys\n" ); + +start_multi(); + +for ( my $gc = 0; $gc < 2000000; $gc++ ){ + print( "Adding key number ".$gc."\n" ); + kv_add( gen_key_name(), gen_junk() ); +} + +end_multi(); + +print( "Finished adding keys\n" ); + +$sck->shutdown( SHUT_RDWR ); + +undef $chars; +undef $jlen; +undef $sck; +exit( 0 ); |
