memcached一般是很多服务器一起做缓存的,而且每个数据都是通过客户端散列到各个服务器。如果想通过telnet删除一个key可就麻烦了,你可能需要一个一个的找,2-3个服务器还行,如果是几十个的时候就麻烦了。
在这里给出一个脚本来执行这样的任务。
#!/bin/sh # description delete entries by batch mode. # useage ./clear.sh key1 key2 key3 ... KEYS=$@ HOSTS=("127.0.0.1" "127.0.0.1" "127.0.0.01" "127.0.0.1") PORTS=(10000 10001 10002 10003) if [ $# = 0 ];then echo "key set is empty!" exit 0 fi HOSTS_LEN=${#HOSTS[@]} for ((p=0;p<$#;p++)); do for ((i=0;i<HOSTS_LEN;i++)); do ( #sleep 1 #echo "delete ${KEYS[$p]}" echo "stats" sleep 1 echo "quit" )|telnet ${HOSTS[$i]} ${PORTS[$i]} echo done done echo "delete key sets [$@] finished!"