There are all sorts of different interfaces to memcached, but you don’t need any of them to make requests from the command line, because its protocol is so simple. Try this, assuming it’s running on the usual port on the local machine:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | echo stats | nc 127.0.0.1 11211 STAT pid 22020 STAT uptime 3689364 STAT time 1227753109 STAT version 1.2.5 STAT pointer_size 64 STAT rusage_user 4543.071348 STAT rusage_system 8568.293421 STAT curr_items 139897 STAT total_items 51710845 STAT bytes 360147055 STAT curr_connections 40 STAT total_connections 66762 STAT connection_structures 327 STAT cmd_get 319992973 STAT cmd_set 51710845 STAT get_hits 280700485 STAT get_misses 39292488 STAT evictions 849165 STAT bytes_read 141320046298 STAT bytes_written 544357801590 STAT limit_maxbytes 402653184 STAT threads 4 END |
Here’s an easy “top” emulator for memcached:
1 | watch "echo stats | nc 127.0.0.1 11211" |
If you don’t have netcat (nc), you can also use Bash’s built-in /proc/tcp magic if it’s enabled. Anything that can push a couple of characters to a TCP port and print the result to stdout will work. Or you can use something like this if you must do it via PHP:
1 | watch 'php -r '"'"'$m=new Memcache;$m->connect("127.0.0.1", 11211);print_r($m->getstats());'"'" |
You can do even more fun/specific stuff like ‘stats items’, ‘stats sizes’, ‘stats slabs’, …
See http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
Another client worth mentioning is telnet. The advantage over netcat is the interactivity. (but then again nc is good for scripting)
watch “(echo stats ; echo quit ) | nc 127.0.0.1 11211” works, echo stats doesn’t since memcache expects you to quit the connection.
This helped me a great deal, thank you.
Thanks! Exactly what I needed.
@gorenje You can also use the -q option:
watch “echo stats | /bin/netcat -q 2 127.0.0.1 11211”;