redis-cli 中,Redis 本身没有直接提供一个命令来列出所有键和值的功能,因为 Redis 是一个高效的键值存储数据库,而直接查询所有数据可能会对性能产生影响,尤其是数据量较大的情况下。但是你可以通过以下的方法查询所有键,进而查询它们对应的值。


查询所有键

Redis 提供了 KEYS 命令,可以列出符合指定模式的所有键。

查询所有键:

如果你需要获取数据库中的所有键,可以运行以下命令:

KEYS *

Redis 会返回数据库中所有的键。例如:

127.0.0.1:6379> KEYS *
1) "key1"
2) "key2"
3) "some_other_key"

查询某个键的值

在获取键名后,可以使用 GET 或其他相关命令来查值。例如:

GET key1

这会返回 key1 的值。

其他类型查询命令:
如果键的类型不是 string,需要使用其他对应的查询命令:

  • 如果键是 hash 类型:
HGETALL your_hash_key
  • 如果键是 list 类型:
LRANGE your_list_key 0 -1
  • 如果键是 set 类型:
SMEMBERS your_set_key
  • 如果键是 sorted set 类型:
ZRANGE your_sorted_set_key 0 -1 WITHSCORES

高效查询所有键(使用 SCAN 命令)

当 Redis 数据量较大时,使用 KEYS * 查询可能导致阻塞。为了避免性能问题,可以使用 SCAN 命令迭代式地获取所有键。

SCAN 命令:

SCAN 0

此命令返回一个游标和部分键列表。例如:

127.0.0.1:6379> SCAN 0
1) "238"
2) 1) "key1"
   2) "key2"
  • 第一项 "238" 是返回的游标。
  • 第二项是返回的键。

继续运行以下命令直到游标返回为 0,以获取所有键:

SCAN <游标>

配合模式查询:

可以通过匹配模式进行筛选,例如:

SCAN 0 MATCH some_prefix:*

查询键和值的脚本方法

如果你想直接列出键值对,可以结合脚本实现。

方法 1:手动获取所有值

假设你用 KEYS * 查询到以下键:

127.0.0.1:6379> KEYS *
1) "key1"
2) "key2"

然后逐个查询值:

127.0.0.1:6379> GET key1
"value1"

127.0.0.1:6379> GET key2
"value2"

批量查询所有键及值的技巧

在大型 Redis 数据集中,用 SCAN 搭配脚本实现批量查询:

方法:用 redis-cli 配合命令输出所有键值对

redis-cli --raw keys "*" | xargs -I {} sh -c 'echo "{} -> $(redis-cli get {})"'

这会输出类似以下结果:

key1 -> value1
key2 -> value2

注意事项

  1. 性能优化
  • 如果是大数据集,避免使用 KEYS *,改用 SCAN 命令按需筛选键。
  • 因为 KEYS 会阻塞 Redis,导致其他请求无法响应。
  1. 区分数据库
    Redis 默认连接的是数据库 0,如果数据存储在其他数据库,可以通过 SELECT 命令切换:
SELECT <数据库编号>
  1. 仅在测试或开发环境使用 KEYS 和全量查询
    在正式环境中,除非明确知道不会对性能产生影响,否则尽量避免使用 KEYS * 这样的操作。



Redis-cli如何查询所有数据插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2025/08/02/redis-cli/