You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis容器内redis-cli keys *返回空数组,但指定key可查询的问题

Redis容器中keys *返回空但实际存在key的问题解决

问题现象

在Docker容器运行Redis,外部脚本已向log_list列表推送数据,但进入容器执行redis-cli keys *返回(empty array)。通过redis-cli info keyspace确认db0存在1个key,直接指定log_list查询能正常返回,已排除数据库选择错误,终端输出如下:

/redis_data $ redis-cli info keyspace
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
/redis_data $ redis-cli keys *
(empty array)
/redis_data $ redis-cli select 0
OK
/redis_data $ redis-cli keys *
(empty array)
/redis_data $ redis-cli keys log_list # 我推送数据的目标key
1) "log_list"
/redis_data $ redis-cli keys dne # 确认不存在的key
(empty array)

原因&解决办法

这种情况基本是Redis配置限制了keys *命令的使用,以下是具体排查和解决方式:

1. 检查keys命令是否被重命名/禁用

进入容器查看Redis配置文件(默认路径/etc/redis/redis.conf),搜索rename-command KEYS:

  • 如果配置是rename-command KEYS "",说明keys命令被直接禁用;
  • 如果是rename-command KEYS "new_cmd_name",则需要用新的命令名执行查询操作。

2. 用安全命令替代keys *

keys *会一次性遍历所有key,数据量大时会阻塞Redis,生产环境不建议使用。可以用scan命令渐进式遍历所有key:

redis-cli scan 0

执行后会返回下一个遍历游标和当前批次的key,重复执行直到游标返回0,即可获取所有key。

3. 恢复keys命令(按需操作)

如果确实需要使用keys命令,修改配置文件注释掉或删除rename-command KEYS相关行,然后重启Redis容器:

docker restart <你的Redis容器名>

内容的提问来源于stack exchange,提问作者Drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:55:21