Perl script to dump all the keys/values that memcached presents over its API (not totally guaranteed to be *all* the keys/values, but good enough for debugging). I used it to dump all the SimpleSAMLPHP sessions this server was storing to debug a session expiration issue.
#!/usr/bin/perl
use 5.10.0;
use Cache::Memcached;
use Data::Dumper;
use MIME::Base64;
use strict;
my $server = "localhost:11211";
my $memcached = new Cache::Memcached {
'servers' => [ $server ],
'debug' => 0
};
my @items = split(/\r\n/, $memcached->stats("items")->{hosts}->{$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/, $memcached->stats("cachedump $bucket 0")->{hosts}->{$server}->{"cachedump $bucket 0"});
foreach my $ticket (@lines) {
$ticket =~ /^ITEM (?<item>.*) \[(?<bytes>\d+) b; (?<expire>\d+) s\]$/ig;
printf("%s: %s bytes: expires %s (%s)\n%s\n", $+{item}, $+{bytes}, $+{expire}, scalar(gmtime($+{expire})), encode_base64($memcached->get($+{item})));
}
}
$memcached->disconnect_all;