如何使用CLI刷新Redis缓存并删除所有内容

时间:2020-01-09 10:39:14  来源:igfitidea点击:

我为我的Web应用程序设置了Redis缓存。
如何要一个空白数据库并解决所有键。
如何删除Redis缓存中的所有内容?
如何使用Linux/Unix命令行选项刷新Redis缓存?
从我的Redis集群删除所有密钥的命令是什么?
您可以使用以下任一redis-cli命令刷新缓存/数据库并删除所有键:

  • FLUSHDB命令删除当前所选数据库的所有键。
  • FLUSHALL命令删除所有现有数据库的所有键,而不仅仅是当前选择的一个。

请注意,Redis版本4.0.0及更高版本现在可以在不阻塞服务器的情况下在其他线程中删除后台密钥。

ASYNC选项已添加到FLUSHALL和FLUSHDB,以使整个数据集或单个数据库可以异步释放。

警告:一旦删除数据/键/值就无法恢复。
执行以下命令时要小心。

刷新Redis缓存的语法

从shell提示符刷新Redis缓存的语法如下:

redis-cli FLUSHDB
redis-cli -n DB_NUMBER FLUSHDB
redis-cli -n DB_NUMBER FLUSHDB ASYNC
redis-cli FLUSHALL
redis-cli FLUSHALL ASYNC

默认服务器主机名设置为127.0.0.1,端口设置为6379。
我们可以按如下所示进行覆盖:

$ redis-cli -h {host-name} -p {port-name} command
$ redis-cli -h 192.168.5.100 -p 6000 FLUSHDB
$ redis-cli -h 10.8.0.1 FLUSHALL

您可以通过将-a选项传递给redis-cli来提供连接服务器时使用的密码:

$ redis-cli -a '{password-here}' COMMAND
$ redis-cli -a 'SuperSecretPassword' -h 10.8.0.5 -p 6379 -n 2 FLUSHDB

示例使用redis-cli删除所有密钥

执行以下命令以删除DB 4的所有键:

$ redis-cli -n 4 FLUSHDB

输出示例:

OK

要除去所有现有数据库的所有键,请运行:

$ redis-cli FLUSHALL

输出示例:

OK

使用Ansible devops工具自动删除Redis缓存

假设您正在运行10个不同的Redis服务器,并且要删除所有现有DB的所有密钥。
创建一个主机文件,如下所示:

$ cat hosts

输出示例:

[redis]
ansible_user=Hyman
vm1-eu
vm2-us
vm3-bom
vm4-del
vm5-nyc
vm6-eu-2
vm7-linod-fr-1
vm8-do-blr-1
vm9-do-blr-2
vm10-linod-tx-1

现在您所要做的就是运行以下命令(假设在您的工作站和所有其他VM /裸机服务器之间设置了SSH密钥)

$ ansible -i hosts redis -m command -a '/usr/bin/redis-cli FLUSHALL'

输出示例:

vm1-eu | SUCCESS | rc=0 >>
OK

vm2-us | SUCCESS | rc=0 >>
OK

vm3-bom | SUCCESS | rc=0 >>
OK

vm4-del | SUCCESS | rc=0 >>
OK

vm5-nyc | SUCCESS | rc=0 >>
OK

vm6-eu-2 | SUCCESS | rc=0 >>
OK

vm7-linod-fr-1 | SUCCESS | rc=0 >>
OK

vm8-do-blr-1 | SUCCESS | rc=0 >>
OK

vm9-do-blr-2 | SUCCESS | rc=0 >>
OK

m10-linod-tx-1 | SUCCESS | rc=0 >>
OK

关于Redis集群的说明

您正在使用集群吗?
您需要在每个主节点上运行FLUSHDB或FLUSHALL命令。
例如,使用bash for loop在三个主节点上运行以下命令

# three master node ip address
for s in 10.105.29.1 10.105.29.2 10.105.29.3
do
  echo "Flushing DB from $s node ..."
  redis-cli -h $s FLUSHDB
done

使用AWS Elasticache集群时从控制台刷新Redis缓存/节点

无需重新启动节点。
您可以从EC2云服务器/主机或使用API运行以上命令:

# FLUSH everything #
$ redis-cli -h AWS-Elasticache-Host -p AWS-Port_Number FLUSHALL
# FLUSH by DB_NUMBER aka specific DB #
$ redis-cli -h AWS-Elasticache-Host -p AWS-Port_Number -n DB_NUMBER FLUSHDB