Perl
Latest commit 18177fe Apr 1, 2016 @key-amb Add slack notification

README.md

Build Status

NAME

memcached-cli - Interactive/Batch CLI for Memcached

SYNOPSIS

Run an interactive CLI:

memcached-cli <HOST[:PORT] | /path/to/socket> [OPTIONS]
memcached-cli --addr|-a <HOST[:PORT] | /path/to/socket> [OPTIONS]
memcached-cli [OPTIONS]  # Connect to 127.0.0.1:11211

These above turns into interactive mode like below:

memcached@SERVER:PORT>
memcached@SERVER:PORT> set foo Foo
OK
memcached@SERVER:PORT> add bar Bar 300
OK
memcached@SERVER:PORT> gets foo bar
Key:foo Value:Foo       Length:3B       Flags:0 Cas:219
Key:bar Value:Bar       Length:3B       Flags:0 Cas:220
memcached@SERVER:PORT> \cd 1  # Alias of 'cachedump'
Key:foo Value:Foo       Length:3B       Expire:2016-03-26 00:30:27      Flags:0 Cas:219
Key:bar Value:Bar       Length:3B       Expire:2016-03-26 09:53:19      Flags:0 Cas:220
Key:baz Value:Baz       Length:3B       Expire:2016-03-26 10:49:05      Flags:123       Cas:221
memcached@SERVER:PORT> delete foo
OK
memcached@SERVER:PORT> flush_all
OK
memcached@SERVER:PORT> \q     # Quit interactive mode

Run as batch script:

memcached-cli [options] <command> [<args>]

Show Help/Manual:

# For general usage
memcached-cli -h|--help
memcached-cli --man

# For available commands
memcached@SERVER:PORT> help
memcached@SERVER:PORT> help <command>

DESCRIPTION

This script runs an interactive CLI or batch utility for Memcached.

In interactive mode, it connects to a specified Memcached server and interactively executes each command you run.

In batch mode, you can execute any command which you can do in interactive mode.

COMMANDS

NOTE:

A couple of features of following commands derives from memcached/memcached-tool

  • display|\d

    Displays slabs statistics.

    This command comes from memcached/memcached-tool.

  • stats|\s REGEXP

    Shows general statistics of memcached server by stats command. You can filter the parameters of stats by optional REGEXP argument.

    Comes from memcached/memcached-tool.

  • settings|config|\c REGEXP

    Shows memcached server settings by stats settings command. You can filter the parameters of stats by optional REGEXP argument.

    Comes from memcached/memcached-tool, too.

  • cachedump|\cd CLASS [NUMBER]

    Shows detailed information including expiration times of some items in specified slab CLASS.

    You can specify NUMBER of items to show. Without NUMBER option, shows 20 items only by default.

  • detaildump|\dd

    Reports statistics about data access using KEY prefix. The default separator for prefix is ':'.

    If you have not enabled reporting at Memcached start-up, you can enable it by command detail on.

    See man memcached(1) for details.

  • detail MODE

    Enables or disables stats collection for stats detail dump reporting.

    MODE should be either "on" or "off" to enable or to disable.

  • dump_all

    Dumps whole data in Memcached server.

    This command comes from memcached/memcached-tool.

    Recommended to use in batch mode like bellow:

    memcached-cli SERVER:PORT dump_all > /path/to/dump.txt
    
  • restore_dump FILE

    Restore data from dump data file created by dump_all.

  • randomset|sample [NUMBER [MAX_LENGTH [MIN_LENGTH [NAMESPACE]]]]

    Generates random sample data and SET all of them.

    By default, it generates 100 data whose length is between 1B and 1000kB with prefix "memcached-cli:sample";

  • get KEY1 [KEY2 ...]

    Gets items in memcached by specified KEYs and shows their data.

  • gets KEY1 [KEY2 ...]

    Gets items with CAS data in memcached by specified KEYs and shows their data.

  • set KEY VALUE [EXPIRE [FLAGS]]

    Stores data into memcached by specified KEY, VALUE and optional EXPIRE and FLAGS.

  • add KEY VALUE [EXPIRE [FLAGS]]

    Stores data into memcached by specified KEY, VALUE and optional EXPIRE and FLAGS only when there is NO data with the same KEY in the server.

  • replace KEY VALUE [EXPIRE [FLAGS]]

    Stores data into memcached by specified KEY, VALUE and optional EXPIRE and FLAGS only when there IS data with the same KEY in the server.

  • append KEY VALUE

    Appends VALUE after existing data in memcached which has specified KEY.

  • prepend KEY VALUE

    Puts VALUE before existing data in memcached which has specified KEY.

  • cas KEY VALUE CAS [EXPIRE [FLAGS]]

    Stores data into memcached by specified KEY, VALUE and optional EXPIRE and FLAGS only when CAS of data is not changed from specified CAS value.

  • touch KEY EXPIRE

    Update data expiration time with specified KEY and EXPIRE.

  • incr KEY VALUE

    Add numeric VALUE for a data with specified KEY.

  • decr KEY VALUE

    Subtract numeric VALUE from a data with specified KEY.

  • delete KEY

    Deletes one item in memcached by specified KEY.

  • flush_all|flush [DELAY]

    Invalidates all data in memcached by flush_all command.

    With DELAY option, invalidation is delayed for specified seconds.

    See official documentation of memcached for details.

  • call COMMAND [ARGS ...]

    Executes any commands given as arguments.

    With this command, you can execute any command against Memcached including what is not implemented as normal commands in this program.

    Here are some examples:

    > call stats conns
    > call slabs reassign 6 10
    > call flush_all
    

    LIMITATION:

    Multi-lined queries like set are not supported.

  • version

    Shows memcached server version.

  • quit|exit|\q

    Exits program in interactive mode.

  • help|\h [COMMAND]

    Shows available COMMANDs and summary of their usage.

    With optional COMMAND argument, shows detailed information of it.

OPTIONS

  • -t|--timeout=Int

    Sets connection timeout. Default is 1 seconds.

  • -d|--debug

    Shows debug logs.

SEE ALSO

App::Memcached::CLI::Main, memcached(1), http://www.memcached.org/

AUTHORS

YASUTAKE Kiyoshi yasutake.kiyoshi@gmail.com

LICENSE

Copyright (C) 2015 YASUTAKE Kiyoshi.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. That means either (a) the GNU General Public License or (b) the Artistic License.