redis-cli is the command line interface to redis and is used as the client provided by redis. It is normally used to connect to redis and query redis as below.
redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> randomkey
"myhllkey"
127.0.0.1:6379> type myhllkey
string
However there are other ways in which redis-cli can be useful in exploring redis
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
6 985.97K 1 0 21 (+0) 5
6 985.97K 1 0 22 (+1) 5
6 985.97K 1 0 23 (+1) 5
6 985.97K 1 0 24 (+1) 5
6 985.97K 1 0 25 (+1) 5
The above command "redis-cli --stat -i 2"will keep on returning the general info on the redis server after every 2 seconds.
This info includes number of keys, memory, clients, blocked clients, no of requests and connections.
The paramater 'i' is the time interval in seconds after which the redis-cli will query redis. The default value of i is 1 so that "src/redis-cli --stat" will give the data after every 1 second.
Finally it will give information about the numbers of keys of each type found, with its average key members and average key size. This is a very useful command because periodically running it and analysing its output can sometimes give a clue if your redis data size is always increasing, and to potentially big keys.
The output for me was as below.
# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type. You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).
[00.00%] Biggest string found so far 'mystringkey' with 13 bytes
[00.00%] Biggest string found so far 'myhllkey' with 90 bytes
[00.00%] Biggest zset found so far 'mysortedsetkey' with 6 members
[00.00%] Biggest list found so far 'mylistkey' with 7 items
[00.00%] Biggest set found so far 'mysetkey' with 4 members
[00.00%] Biggest hash found so far 'myhashkey' with 2 fields
-------- summary -------
Sampled 6 keys in the keyspace!
Total key length in bytes is 59 (avg len 9.83)
Biggest string found 'myhllkey' has 90 bytes
Biggest list found 'mylistkey' has 7 items
Biggest set found 'mysetkey' has 4 members
Biggest hash found 'myhashkey' has 2 fields
Biggest zset found 'mysortedsetkey' has 6 members
2 strings with 103 bytes (33.33% of keys, avg size 51.50)
1 lists with 7 items (16.67% of keys, avg size 7.00)
1 sets with 4 members (16.67% of keys, avg size 4.00)
1 hashs with 2 fields (16.67% of keys, avg size 2.00)
1 zsets with 6 members (16.67% of keys, avg size 6.00)
4) repeatedly querying redis after every interval for a certain number of times.
"redis-cli -r 5 -i 1 set a b" will set the value of key 'a' to be 'b' 5 times after an interval of 1 sec.
redis-cli --help can be used to find out all the options in redis cli.
It has various options like outputting the data in csv format, for finding out the redis latency, system latency, reading arguments from standard input etc.
:)
redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> randomkey
"myhllkey"
127.0.0.1:6379> type myhllkey
string
However there are other ways in which redis-cli can be useful in exploring redis
1) finding out the general redis stats.
redis-3.2.4 $ src/redis-cli --stat -i 2------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
6 985.97K 1 0 21 (+0) 5
6 985.97K 1 0 22 (+1) 5
6 985.97K 1 0 23 (+1) 5
6 985.97K 1 0 24 (+1) 5
6 985.97K 1 0 25 (+1) 5
The above command "redis-cli --stat -i 2"will keep on returning the general info on the redis server after every 2 seconds.
This info includes number of keys, memory, clients, blocked clients, no of requests and connections.
The paramater 'i' is the time interval in seconds after which the redis-cli will query redis. The default value of i is 1 so that "src/redis-cli --stat" will give the data after every 1 second.
2) finding out the big keys in redis.
"redis-cli --bigkeys" command will scan the redis db and will start giving you information about the biggest keys of each type that it encounters as it scans the redis db.Finally it will give information about the numbers of keys of each type found, with its average key members and average key size. This is a very useful command because periodically running it and analysing its output can sometimes give a clue if your redis data size is always increasing, and to potentially big keys.
The output for me was as below.
# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type. You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).
[00.00%] Biggest string found so far 'mystringkey' with 13 bytes
[00.00%] Biggest string found so far 'myhllkey' with 90 bytes
[00.00%] Biggest zset found so far 'mysortedsetkey' with 6 members
[00.00%] Biggest list found so far 'mylistkey' with 7 items
[00.00%] Biggest set found so far 'mysetkey' with 4 members
[00.00%] Biggest hash found so far 'myhashkey' with 2 fields
-------- summary -------
Sampled 6 keys in the keyspace!
Total key length in bytes is 59 (avg len 9.83)
Biggest string found 'myhllkey' has 90 bytes
Biggest list found 'mylistkey' has 7 items
Biggest set found 'mysetkey' has 4 members
Biggest hash found 'myhashkey' has 2 fields
Biggest zset found 'mysortedsetkey' has 6 members
2 strings with 103 bytes (33.33% of keys, avg size 51.50)
1 lists with 7 items (16.67% of keys, avg size 7.00)
1 sets with 4 members (16.67% of keys, avg size 4.00)
1 hashs with 2 fields (16.67% of keys, avg size 2.00)
1 zsets with 6 members (16.67% of keys, avg size 6.00)
3) scanning keys with pattern
redis-cli --scan --pattern "*list*" will find out all the keys which have the word 'list' in them. Also, it will internally use 'scan' and not keys, and will not block other commands for large amount of time even if the database size is very large.4) repeatedly querying redis after every interval for a certain number of times.
"redis-cli -r 5 -i 1 set a b" will set the value of key 'a' to be 'b' 5 times after an interval of 1 sec.
redis-cli --help can be used to find out all the options in redis cli.
It has various options like outputting the data in csv format, for finding out the redis latency, system latency, reading arguments from standard input etc.
:)