Skip to content

Instantly share code, notes, and snippets.

@jbuck
Created April 7, 2016 04:30
Show Gist options
  • Select an option

  • Save jbuck/03ada61757d3446b4a3c34bfdb6f7958 to your computer and use it in GitHub Desktop.

Select an option

Save jbuck/03ada61757d3446b4a3c34bfdb6f7958 to your computer and use it in GitHub Desktop.
Memcache replication lol
#!/usr/bin/perl \
use strict;
use Cache::Memcached;
use Data::Dumper;
use MIME::Base64;
my $get_server = $ARGV[0] || die;
my $set_server = $ARGV[1] || die;
my $get_memcached = new Cache::Memcached {
'servers' => [ $get_server ],
'debug' => 0
};
my $set_memcached = new Cache::Memcached {
'servers' => [ $set_server ],
'debug' => 0
};
my @items = split(/\r\n/, $get_memcached->stats("items")->{hosts}->{$get_server}->{items});
my %buckets = ();
foreach my $bucket (@items) {
$bucket =~ s/^.*:(.*):.*$/$1/ig;
$buckets{$bucket} = 1;
}
foreach my $bucket (sort keys %buckets) {
my @lines = split(/\r\n/, $get_memcached->stats("cachedump $bucket 0")->{hosts}->{$get_server}->{"cachedump $bucket 0"});
foreach my $ticket (@lines) {
$ticket =~ /^ITEM (?<item>.*) \[(?<bytes>\d+) b; (?<expire>\d+) s\]$/ig;
$set_memcached->set($+{item}, $get_memcached->get($+{item}), $+{expire});
}
}
$get_memcached->disconnect_all;
$set_memcached->disconnect_all;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment