要刷新redis,FLUSHALL将使用该命令.
使用Redis 2.6.16,当我在使用redis-cli时尝试FLUSHALL和FLUSHDB命令时,我收到了一个FLUSHALL错误.其他命令工作正常.
a)FLUSHDB命令出了什么问题?
b)解决方法是关闭redis,然后删除rdb文件?(我相信是这样)
更新:
不,我们从未解决过这个问题.
(唯一已知的解决方案是使用上面的步骤'b')
小智 35
可能是您的Redis配置已重命名某些命令以防止您的数据库被意外删除.
在redis.conf中查找以下行:
rename-command FLUSHDB ""
rename-command FLUSHALL ""
Run Code Online (Sandbox Code Playgroud)
Cam*_*dro 22
Redis 官方 Helm 图表默认禁用FLUSHDB和FLUSHALL命令。在这种情况下,它没有在任何redis.conf容器内部指定,因此您需要在您的 Redis YAML 中指定它:
master:
disableCommands: []
Run Code Online (Sandbox Code Playgroud)
我正在使用 Helm,并且不想重新安装它,因此我通过修改 Helm 生成的 configmap 以包含配置来解决这个问题。
CONFIGMAP=<<value of common.names.fullname>>-configuration
kubectl edit cm $CONFIGMAP
Run Code Online (Sandbox Code Playgroud)
您应该看到类似以下内容:
master.conf: |-
dir /data
# User-supplied master configuration:
rename-command FLUSHDB ""
rename-command FLUSHALL ""
# End of master configuration
redis.conf: |-
# User-supplied common configuration:
# Enable AOF https://redis.io/topics/persistence#append-only-file
appendonly yes
# Disable RDB persistence, AOF persistence already enabled.
save ""
# End of common configuration
replica.conf: |-
dir /data
slave-read-only yes
# User-supplied replica configuration:
rename-command FLUSHDB ""
rename-command FLUSHALL ""
# End of replica configuration
Run Code Online (Sandbox Code Playgroud)
删除以开头的行,rename-command使其看起来更像这样:
master.conf: |-
dir /data
# User-supplied master configuration:
# End of master configuration
redis.conf: |-
# User-supplied common configuration:
# Enable AOF https://redis.io/topics/persistence#append-only-file
appendonly yes
# Disable RDB persistence, AOF persistence already enabled.
save ""
# End of common configuration
replica.conf: |-
dir /data
slave-read-only yes
# User-supplied replica configuration:
# End of replica configuration
Run Code Online (Sandbox Code Playgroud)
重新启动 Redis Pod
kubectl delete pods $(kubectl get pods | grep redis | awk {'print $1'})
Run Code Online (Sandbox Code Playgroud)
现在执行到 master pod 并刷新所有
kubectl exec redis-master-0 -- redis-cli FLUSHALL
OK
Run Code Online (Sandbox Code Playgroud)
请注意,如果您想再次使用 FLUSHALL 或 FLUSHDB,则重新安装 Helm 版本时必须再次执行此操作。
更新:虽然这有效,但当您重新安装 helm 版本时,pod 将进入 crashloopbackoff,因为它们会在历史记录中看到您运行的命令不存在,因此您必须再次执行此操作才能获取 pod跑步。在这种情况下,最好采用 @camilo-sampedro 的答案。