Redis command to get all available keys?

2019-01-16 00:01发布

Is there a Redis command for fetching all keys in the database? I have seen some python-redis libraries fetching them. But was wondering if it is possible from redis-client.

9条回答
太酷不给撩
2楼-- · 2019-01-16 00:21

Take a look at following Redis Cheat Sheet. To get a subset of redis keys with the redis-cli i use the command

KEYS "prefix:*"
查看更多
时光不老,我们不散
3楼-- · 2019-01-16 00:23

-->Get all keys from redis-cli

-redis 127.0.0.1:6379> keys *

-->Get list of patterns

-redis 127.0.0.1:6379> keys d??

This will produce keys which start by 'd' with three characters.

-redis 127.0.0.1:6379> keys *t*

This wil get keys with matches 't' character in key

-->Count keys from command line by

-redis-cli keys * |wc -l

-->Or you can use dbsize

-redis-cli dbsize
查看更多
太酷不给撩
4楼-- · 2019-01-16 00:24
redis-cli -h <host> -p <port> keys * 

where * is the pattern to list all keys

查看更多
5楼-- · 2019-01-16 00:29

It can happen that using redis-cli, you connect to your remote redis-server, and then the command:

KEYS *

is not showing anything, or better, it shows:
(empty list or set)

If you are absolutely sure that the Redis server you use is the one you have the data, then maybe your redis-cli is not connecting to the Redis correct database instance.

As it is mentioned in the Redis docs, new connections connect as default to the db 0.

In my case KEYS command was not retrieving results because my database was 1. In order to select the db you want, use SELECT.
The db is identified by an integer.

SELECT 1
KEYS *

I post this info because none of the previous answers was solving my issue.

查看更多
甜甜的少女心
6楼-- · 2019-01-16 00:30

Updated for Redis 2.8 and above

As noted in the comments of previous answers to this question, KEYS is a potentially dangerous command since your Redis server will be unavailable to do other operations while it serves it. Another risk with KEYS is that it can consume (dependent on the size of your keyspace) a lot of RAM to prepare the response buffer, thus possibly exhausting your server's memory.

Version 2.8 of Redis had introduced the SCAN family of commands that are much more polite and can be used for the same purpose.

The CLI also provides a nice way to work with it:

$ redis-cli --scan --pattern '*'
查看更多
贪生不怕死
7楼-- · 2019-01-16 00:34

Yes, you can get all keys by using this

var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);    
  redisClient.keys('*example*', function (err, keys) {
})
查看更多
登录 后发表回答