This is easy right? Can’t you just restart the memcached server? Well yes, but you may cause errors in applications that are already connected to it. You can follow your memcached restart with an application restart, eg for a Ruby on Rails app:
# /etc/init.d/memcached restart && mongrel_rails cluster::restart
Of course if you have more than one application server you have to restart your app on every single one. This would work on an engineyard slice assuming you have the eycap gem installed:
$ cap production memcached:restart
$ cap production mongrel:restart
Restarting your application is not ideal however, you will lose anything cached in memory, cause delays to users trying to access your site, that sort of thing.
So what can be done? The answer is really simple. Assuming a memcached running on the local machine on the default port:
$ echo ”flush_all” | nc localhost 11211
Easy!
Nice Will. How about adding memcached:flush to the eycap gem? :-)
Genius Post! gotta <3 it. :)
Very Nice tip.
Thanks
you can also telnet to memcached and run many command such as stats
$ telnet localhost 11211
stats
You can also use this handy script to get similar results.
nice, thx
as sidenote, you can do it throu telnet too:
telnet localhost 11211
flush_all
Hi, I noticed that nc hangs (for longer than I cared to check!) after sending the command.. how about adding -w 3 to have it close the socket after 3 seconds of inactivity? (I also tried -q, which looked even better, but sometimes it closed before I could read any answer back)
[...] Flushing memcached servers the easy way I highlighted a way to flush a memcached server without restarting [...]