如何无需重启,从命令行清空Docker容器中Memcached的全部缓存?
如何在Docker环境下清空Memcached缓存(无需重启服务)
嘿,这个需求我经常碰到,其实不用折腾重启服务,利用Memcached自带的命令就能轻松搞定!下面给你两种实用的操作方式:
方式一:交互式执行(适合手动操作)
Memcached内置了flush_all命令专门用来清空所有缓存,我们可以通过docker exec直接进入容器的telnet会话来执行:
- 先找到你的Memcached容器名或ID,用
docker ps就能看到 - 执行命令进入telnet交互模式:
docker exec -it <容器名/容器ID> telnet localhost 11211 - 在弹出的会话里输入
flush_all并回车,看到返回OK就说明缓存已经清空了 - 最后输入
quit退出telnet会话就行
方式二:非交互式一键执行(适合脚本或批量操作)
如果不想进入交互模式,或者要写进自动化脚本里,可以用管道直接把命令传进去,一步到位:
echo "flush_all" | docker exec -i <容器名/容器ID> nc localhost 11211
这里用nc(netcat)替代telnet,同样能和Memcached服务通信执行命令,执行后会返回OK,表示操作成功。
额外说明
flush_all命令只是逻辑上清空缓存,把所有缓存条目标记为过期,Memcached会在后续自动回收内存,完全不会中断服务运行- 如果需要延迟清空,可以加个时间参数,比如
flush_all 60表示60秒后清空所有缓存 - 记得把命令里的
<容器名/容器ID>替换成你实际的Memcached容器信息哦!
内容的提问来源于stack exchange,提问作者caot
相关产品推荐
相关产品推荐

