Created
July 28, 2014 20:01
-
-
Save ser1zw/b233dc7960ac1cd93f38 to your computer and use it in GitHub Desktop.
memcached-manipulator.sh - Memcached manipulation tool
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# memcached manipulator | |
# | |
MEMCACHED_SERVER=localhost:11211 | |
# echo CMD | memcached_send_cmd | |
memcached_send_cmd() { | |
if [ -p /dev/stdin ]; then | |
cat - \ | |
| curl telnet://$MEMCACHED_SERVER 2> /dev/null \ | |
| grep -v '^END' | |
fi | |
} | |
# memcached_exec_cmd CMD [KEY] | |
# echo KEY | memcached_exec_cmd CMD | |
memcached_exec_cmd() { | |
if [ -p /dev/stdin ]; then | |
cat - | xargs echo $1' ' | |
elif [ -z "$2" ]; then | |
echo $1 | |
else | |
echo "$1 $2" | |
fi \ | |
| xargs -I@ echo -e "@\r\nquit" \ | |
| memcached_send_cmd | |
} | |
# memcached_get KEY | |
# echo KEY | memcached_get | |
memcached_get() { | |
memcached_exec_cmd 'get' $1 | grep -v -E '^VALUE' | |
} | |
# memcached_set KEY FLAG EXPTIME BYTES DATA | |
memcached_set() { | |
echo -e "set $1 $2 $3 `echo -n $4 | wc -c`\r\n$4\r\nquit" \ | |
| memcached_send_cmd | |
} | |
memcached_keydump() { | |
memcached_exec_cmd 'stats items' \ | |
| grep -E '^STAT items:[0-9]*:number [0-9]*' \ | |
| awk -F'[: ]' '{print $3" "$5}' \ | |
| memcached_exec_cmd 'stats cachedump' \ | |
| cut -d' ' -f2 | |
} | |
if [ "$1" = 'get' ]; then | |
memcached_get $2 | |
elif [ "$1" = 'set' ]; then | |
memcached_set $2 $3 $4 $5 | |
elif [ "$1" = 'delete' ]; then | |
memcached_exec_cmd 'delete' $2 | |
elif [ "$1" = 'clear' ]; then | |
for k in `memcached_keydump`; do memcached_exec_cmd 'delete' $k; done | |
elif [ "$1" = 'keys' ]; then | |
memcached_keydump | |
elif [ "$1" = 'list' ]; then | |
memcached_keydump | grep -E "$2" | memcached_get | |
elif [ "$1" = 'dump' ]; then | |
memcached_keydump | memcached_get | |
elif [ "$1" = 'stats' ]; then | |
memcached_exec_cmd 'stats' | |
else | |
FILENAME=`basename $0` | |
echo | |
echo " $FILENAME - Memcached manipulation tool" | |
echo | |
echo "Usage:" | |
echo " $FILENAME get KEY" | |
echo " $FILENAME set KEY FLAGS EXPTIME DATA" | |
echo " $FILENAME delete KEY" | |
echo " $FILENAME clear" | |
echo " $FILENAME keys" | |
echo " $FILENAME list [PATTERN]" | |
echo " $FILENAME dump" | |
echo " $FILENAME stats" | |
echo | |
echo "Command:" | |
echo " get - Get a cache value" | |
echo " set - Set a cache value" | |
echo " delete - Delete a cache value" | |
echo " clear - Delete all cache values" | |
echo " keys - Dump all cache keys" | |
echo " list - List values of specified key pattern" | |
echo " dump - Dump all values" | |
echo " stats - Show stats" | |
echo | |
echo "Parameter:" | |
echo " KEY - memcached key to get/set" | |
echo " PATTERN - memcached key pattern to get. Same format as 'grep -E PATTERN'." | |
echo " FLAGS - Flags to set" | |
echo " EXPTIME - Expiration time (seconds). Set 0 for never being expired." | |
echo " DATA - Data to set" | |
echo | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment