Redis Notes - Configuration
Redis configuration file
Redis has built-in default configuration makes it ready to go right after installation, to run Redis with default setting just simply type: redis-server
.
However, this setup is only recommandedf for testing purposes, the proper way to configure Redis is by providing a configuration file redis.conf
.
If you want to run it with custom settings:
redis-server </path/to/your_redis.conf>
And it is possible to alter the Redis configuration by passing parameters as options, for example:
redis-server --port 9999 --memory 8g
redis-server /path/to/redis.conf --loglevel debug
The redis.conf
file contains a number of directives with very simple format:
keyword argument1 argument2 ... argumentN
# for example:
salveof 127.0.0.1 6380
Example redis.conf
file:
bind 127.0.0.1
protected-mode yes
port 6379
pidfile /var/run/redis_6379.pid
# using password 'foobar' to portect the server
requirepass foobar
# Specify the eviction policies
maxmemory-policy volatile-lru
# Specify the log file name.
logfile /var/log/redis_6379.log
# Close the connection after a client is idle for N seconds (0 to disable)
timeout 0
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/redis/6379
About logging
To enable logging to the system logger, just set ‘syslog-enabled’ to yes, and optionally update the other syslog parameters to suit your needs.
syslog-enabled yes
Setup loglevel:
loglevel notice
- debug: To log rich information for debug purpose
- verbose: Provide plenty of information in consicely way, less than debug mode
- notice: The right amount of information is basically what you need in the production environment
- warning: Only records important messages
Specify the syslog identity:
syslog-ident reeeeeedis
# specify the filename
logfile my_logfile.log
# or, print log to standard output
# Note: if Redis runs as a daemon service, this config will send log into /dev/null
logfile stdout
rename-command
We can rename some dangerous command in order to pretect production environment:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
FLUSHALL
: Empty all records and databaseFLUSHDB
: Empty databaseCONFIG
: Client-side could modify the configs of serverKEYS
: Client-side could see all the keys