getmemcachedkeytelnet

get all keys set in memcached


How can I get all the keys set in my memcached instance(s)?

I tried googling, but didn't find much except that PHP supports a getAllKeys method, which means it is actually possible to do this somehow. How can I get the same within a telnet session?

I have tried out all the retrieval related options mentioned in memcached cheat sheet and Memcached telnet command summary, but none of them work and I am at a loss to find the correct way to do this.

Note: I am currently doing this in development, so it can be assumed that there will be no issues due to new keys being set or other such race conditions happening, and the number of keys will also be limited.


Solution

  • Found a way, thanks to the link here (with the original google group discussion here)

    First, Telnet to your server:

    telnet 127.0.0.1 11211
    

    Next, list the items to get the slab ids:

    stats items
    STAT items:3:number 1
    STAT items:3:age 498
    STAT items:22:number 1
    STAT items:22:age 498
    END
    

    The first number after ‘items’ is the slab id. Request a cache dump for each slab id, with a limit for the max number of keys to dump:

    stats cachedump 3 100
    ITEM views.decorators.cache.cache_header..cc7d9 [6 b; 1256056128 s]
    END
    
    stats cachedump 22 100
    ITEM views.decorators.cache.cache_page..8427e [7736 b; 1256056128 s]
    END