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


当前回答

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

其他回答

对于那些需要typescript helper的人(使用ioredis)

import Redis from 'ioredis';
import { from, Observable, of } from 'rxjs';
import { first, mergeMap } from 'rxjs/operators';

export function scanKeysFromRedis(redisStore: Redis.Redis, key: string, 
target: number = 0, keys: string[] = []): Observable<string[]> {
  return from(redisStore.scan(target, 'MATCH', key)).pipe(
    first(),
    mergeMap((_keys) => {
      const _target = Number(_keys[0]);
      if (_target !== 0) {
        return scanKeysFromRedis(redisStore, key, _target, [...keys, ..._keys[1]]);
       }
      return of([...keys, ..._keys[1]]);
    }),
  );
}

并调用它:scanKeysFromRedis(store, 'hello');

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

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

print_r($allKeyList);

在核心PHP:

$redis = new Redis();

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

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

print_r($allKeyList);

试着看看KEYS命令。KEYS *将列出redis中存储的所有键。

编辑:请注意KEYS文档页顶部的警告:

时间复杂度:O(N), N为数据库中的键数,假设数据库中的键名和给定模式的长度有限。

UPDATE (V2.8或更高版本):SCAN是KEYS的更好替代方案,因为它不会阻塞服务器,也不会消耗大量资源。更喜欢使用它。

redis-cli -h <host> -p <port> keys * 

哪里*是列出所有键的模式

我们应该在redis 2.8及以后的版本中使用——scan——pattern。

您可以尝试在redis-cli之上使用这个包装器。 https://github.com/VijayantSoni/redis-helper