当前位置:首页 > 问答 > 正文

一键操作快速清空Redis缓存,瞬间释放大量内存空间不费力

开始)

想要一下子把Redis里的东西都清干净,让被占用的内存空间马上腾出来,其实特别简单,根本不用费什么劲儿,这事儿听起来好像需要懂很多技术命令,但实际上,只要你找到了对的方法,点一下或者敲一行命令就能搞定,效果立竿见影,下面我就直接告诉你该怎么做,保证说得明明白白,不用那些让人头疼的专业词儿。

最核心、最彻底的办法,就是使用Redis提供的FLUSHALL命令,这个命令是干啥的呢?它就是Redis里面的“总清空”按钮,根据Redis官方文档的说明(这个命令的说明可以在redis.io/commands/flushall找到),FLUSHALL命令会清空你当前连接的Redis服务器上所有的数据库,什么叫所有的数据库?Redis自己可以分成好多个小数据库,默认是16个,编号从0到15,平时你操作可能只用了其中一个,比如0号库,但FLUSHALL这个命令一执行,可不管你是0号还是15号,它会把所有库里面存的东西,不管是什么类型的数据,是普通的键值对,还是列表、集合、哈希表等等,统统删除掉,一个不留,这就好比你不是在清理一个房间,而是直接把整栋大楼里所有房间的家具杂物一次性全扔出去了,所以释放内存的效果是最快的,也是最彻底的。

那这个命令具体怎么用呢?如果你是在命令行里操作,过程非常简单,你需要连接到你的Redis服务器,怎么连接呢?打开你的终端(比如Windows的CMD或者PowerShell,或者是Linux、Mac的终端),然后输入连接命令,连接命令通常长这样:redis-cli -h 你的Redis服务器地址 -p 端口号 -a 密码,如果你的Redis就装在你自己的电脑上(本地),地址就是127.0.0.1或者localhost,端口号默认是6379,如果没设置密码,那-a 密码这部分就不用写了,举个例子,连接本地的、没密码的Redis,你就只需要输入redis-cli然后按回车就行了。

连接成功之后,你会看到命令提示符变成了0.0.1:6379>这个样子,这说明你已经进入Redis的命令操作界面了,最关键的一步,就是输入清空命令,你直接敲入FLUSHALL这个词,然后大胆地按下回车键,一瞬间,Redis就会开始执行清空操作,如果一切正常,你会在下一行看到Redis给你的回复,是一个简单的OK,这个OK就是告诉你:“搞定了,所有数据都已经清空了!” 这时候,你可以再输入一个查看当前数据库里有多少个键的命令DBSIZE来验证一下,它会返回(integer) 0,意思是当前数据库里的键数量是0,空空如也,就这么一下,之前被数据占用的内存空间就立刻被系统回收了,感觉就像给Redis做了一个快速的“大扫除”,一下子轻松了很多。

这里有个非常重要的提醒,这个提醒在Redis官方文档里也被用大写字母强调过(来源同上):FLUSHALL命令是非常危险和具有破坏性的,因为它不分青红皂白,删掉的是所有数据,而且这个操作是没法撤销的,一旦你按了回车,数据就真的没了,找不回来了,在你敲下这个命令之前,一定要百分之百地确认:第一,你当前连接的Redis服务器是对的,不是生产环境或者别人的测试服务器;第二,这些数据确实是可以被清空的,清空了之后不会影响任何正在运行的程序或者服务,万一你不小心把线上正在用的、非常重要的用户数据给清空了,那可就酿成大事故了,谨慎,谨慎,再谨慎!

正因为FLUSHALL太“暴力”了,Redis还提供了一个相对温和一点的选项,叫做FLUSHALL ASYNC,这个命令是Redis 4.0版本以后才有的,它和普通的FLUSHALL有什么区别呢?普通的FLUSHALL是“同步”执行的,意思是Redis服务器在执行这个清空任务的时候,会暂停处理其他的所有命令,直到清空工作完全做完,才恢复响应,如果你的Redis里数据特别多,这个“暂停”可能会让其他需要访问Redis的应用卡住一小会儿,感觉到延迟,而FLUSHALL ASYNC是“异步”执行的,它告诉Redis:“你去后台慢慢删吧,不用着急,删完了告诉我一声就行,别耽误你处理别的正事。” 这样就不会阻塞服务器处理其他请求了,对于对响应速度要求很高的场景比较友好,但效果是一样的,最终都是全部清空,你可以根据实际情况选择用哪一种。

除了清空所有数据库,有时候你可能只想清空当前正在使用的这个数据库,而不是全部,比如你只在0号库做测试,想清空0号库,但不想动1号库等其他库里的数据,这时候你就可以用FLUSHDB命令,它的用法和FLUSHALL一模一样,在连接后输入FLUSHDB回车就行,它也有异步模式,叫FLUSHDB ASYNC,这个命令就像只清理你当前所在的这一个房间,不会动大楼里的其他房间。

现在很多管理Redis的工具都提供了图形化界面,比如RedisInsight、Another Redis Desktop Manager这些漂亮的软件,在这些工具里,清空缓存就更像“一键操作”了,你通常能在界面上找到一个非常明显的按钮,名字可能叫“清空所有”、“Flush All”或者一个垃圾桶的图标,你点一下这个按钮,工具通常会弹出一个确认框,再次提醒你这个操作的危险性,你确认之后,它就在背后帮你执行了FLUSHALL命令,这对于不太习惯命令行的人来说,确实方便了很多,真正实现了“点一下就行”。

最后再强调一下,虽然清空Redis缓存操作起来很简单,速度也快,但它始终是一个需要极高权限和极度小心的操作,在按下那个“键”或“按钮”之前,深呼吸,核对一下环境,问问自己“数据备份了吗?”“真的可以删吗?”,只要做好了确认,这个功能就是你管理Redis、快速释放内存的得力助手。 结束)

一键操作快速清空Redis缓存,瞬间释放大量内存空间不费力