67
votes

After writing some data to a redis server, I could read the data from a client. However, how can I find the data directory on the file system?

3
/var/lib/redis/dump.rdb (Ubuntu)guettli

3 Answers

122
votes

Quickest method: use redis-cli.

redis-cli config get dir

If you have authentication configured, you will need to pass that in using -a password Replacing "password" with your password.

34
votes

Find your Redis configuration directory, probably /etc/redis. Then look in the config file called redis.conf and find the line that starts dir.

It will look similar to this:

dir /etc/redis/database

This will do the job slowly but surely if you can't be bothered to look :-)

sudo find / -name "redis.conf" -exec grep "^dir" {} \; 2> /dev/null
dir /etc/redis

or if you want the config filename as well:

sudo find / -name "redis.conf" -exec grep -H "^dir" {} \; 2> /dev/null
/private/etc/redis/redis.conf:dir /etc/redis

Other possibilities you can check are whether Redis was started with a custom config file as its first parameter like this:

redis-server /path/to.custom/config-file

or with the dir option set on the commandline like this:

redis-server dir /path/to/data

Use

ps -aef | grep redis

to look for these options.

0
votes

Because Redis config file can be located in several possible places (depending on the system or container, such as /opt/redis/ in my case), a general solution to find the currently configured location of the RDB file (as set using dir in redis.conf - if config file is used at all*) is:

$ cat $(cd / && find | grep redis.conf) | grep dir

*Note that true to its simplicity Redis by default ships without any config files (using built-in configuration which depends on the version, see docs), and this is indeed the case for the official redis:latest container.