Flush All in Memcached using Ruby (Detailed Guide w/ Code Examples)

Use Case(s)

Flushing all keys in Memcached is used when you want to completely clear the cache. This is useful in scenarios like:

  • During development, when you've made changes to your application that might affect cached data.
  • When moving to a new version of an application where the structure of cached data might have changed.
  • Troubleshooting issues related to stale or corrupt data in cache.

Code Examples

Ruby uses the Dalli gem to interact with Memcached servers. Here's an example of how you can flush (clear) all data:

  1. Install the Dalli gem by adding this line to your application's Gemfile:
gem 'dalli'

Then execute:

bundle install
  1. Now use Dalli to connect to Memcached and flush all entries:
require 'dalli' dc = Dalli::Client.new('localhost:11211') dc.flush

In this code, Dalli::Client.new('localhost:11211') creates a new client for the Memcached server running on localhost port 11211. The flush command then clears all data from the server.

Best Practices

  • Only use flush_all when absolutely necessary, as it will delete everything from the cache which may cause a temporary performance hit while the cache is repopulated.
  • It's recommended to only run flush_all during low traffic hours, or during maintenance windows.

Common Mistakes

  • Running flush_all during peak load times can result in slow responses as requests are redirected to the database instead of the fast cache.
  • Make sure the Memcached server is running and accessible, if not the flush operation will fail.


Q: Does flush_all immediately delete all entries? A: No, flush_all doesn't immediately remove items, but it does make them immediately inaccessible. They're actually deleted as part of Memcached's normal item expiration and replacement process.

Q: Can I undo a flush_all command? A: No, once issued, a flush_all command cannot be undone. Be cautious when using this operation.

Was this content helpful?

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.