是否有一个Redis命令获取数据库中的所有键?我见过一些python-redis库获取它们。但我想知道从redis-client是否可以。


当前回答

你可以简单地连接到你的redis服务器使用redis-cli,选择你的数据库和类型键*,请记住它会给你所有的键,目前选定的redis数据库。

其他回答

使用redis-cli,你可以连接到你的远程redis-server,然后命令:

KEYS *

没有显示任何东西,或者更好,它显示: (空列表或集合)

如果你绝对确定你使用的Redis服务器就是你拥有数据的服务器,那么可能你的Redis -cli没有连接到正确的Redis数据库实例。

正如Redis文档中提到的,新连接默认连接到db 0。

在我的情况下,KEYS命令没有检索结果,因为我的数据库是1。为了选择您想要的db,请使用select。 db用整数标识。

SELECT 1
KEYS *

我发布这个信息是因为之前的答案都没有解决我的问题。

如果你正在使用Laravel框架,那么你可以简单地使用这个:

$allKeyList = Redis::KEYS("*");

print_r($allKeyList);

在核心PHP:

$redis = new Redis();

$redis->connect('hostname', 6379);

$allKeyList = $redis->keys('*');

print_r($allKeyList);

如果你的redis是一个集群,你可以使用这个脚本

#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")

arr=($(echo "$redis_list" | tr ',' '\n'))

for info in ${arr[@]}; do
  echo "start :${info}"
  redis_info=($(echo "$info" | tr ':' '\n'))
  ip=${redis_info[0]}
  port=${redis_info[1]}
  echo "ip="${ip}",port="${port}
  redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
  redis-cli -c -h $ip -p $port keys \*

done

echo "end"

你可以简单地连接到你的redis服务器使用redis-cli,选择你的数据库和类型键*,请记住它会给你所有的键,目前选定的redis数据库。

在Redis中获得所有键

使用——scan选项获取所有键:

$ redis-cli --scan --pattern '*'

使用keys命令列出所有密钥:

$ redis-cli KEYS '*'