Redis config

Redis config | Learn various configurations in redis

Redis can be customized by changing the values in redis.config file. In this blog, we will learn about redis config. We will understand how to change the various parameters in redis. So let’s get started.

Redis configuration file

Redis configuration

The redis configuration is present inside redis.config file. The location of the configuration file in centos is /etc/redis.config.The location might vary based on the operating system on which the redis is installed.

Users also have the flexibility to define their own configuration file and use this file by starting the redis service.

Users can use the below command to start redis from the user-defined configuration file.

redis-server <path_to_conf_file>

Redis Default configuration

When you install redis below is the default configuration setting that will be present in redis.

bind 127.0.0.1 -::1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
locale-collate ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
 
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

Users can also get configuration information from the command line by typing below command

127.0.0.1:6379> CONFIG GET *  
  1) "proc-title-template"
  2) "{title} {listen-addr} {server-mode}"
  3) "loglevel"
  4) "notice"
  5) "min-replicas-max-lag"
  6) "10"
  7) "repl-ping-replica-period"
  8) "10"
  9) "server_cpulist"
 10) ""
 11) "shutdown-on-sigterm"
 12) "default"
 13) "list-max-listpack-size"
 14) "-2"
 15) "cluster-allow-pubsubshard-when-down"
 16) "yes"
 17) "zset-max-ziplist-value"
 18) "64"
 19) "set-max-intset-entries"
 20) "512"
 21) "cluster-replica-no-failover"
 22) "no"
.................................
.................................
.................................
.................................
367) "pidfile"
368) ""
369) "io-threads"
370) "1"
371) "cluster-migration-barrier"
372) "1"
373) "stream-node-max-bytes"
374) "4096"
375) "tls-ciphersuites"
376) ""
377) "slave-announce-ip"
378) ""
379) "appendfsync"
380) "everysec"
381) "dynamic-hz"
382) "yes"
383) "hash-max-ziplist-value"
384) "64"
127.0.0.1:6379> 

Redis Default configuration

Redis configuration command

Redis configuration command

Users can also use the redis cli to get the redis configuration details. Redis provides commands using which a user can get the redis configurations.

Type the below command to get all the configuration commands present in redis.

127.0.0.1:6379> help config

  CONFIG 
  summary: A container for server configuration commands
  since: 2.0.0
  group: server

  CONFIG GET parameter [parameter ...]
  summary: Get the values of configuration parameters
  since: 2.0.0
  group: server

  CONFIG HELP 
  summary: Show helpful text about the different subcommands
  since: 5.0.0
  group: server

  CONFIG RESETSTAT 
  summary: Reset the stats returned by INFO
  since: 2.0.0
  group: server

  CONFIG REWRITE 
  summary: Rewrite the configuration file with the in memory configuration
  since: 2.8.0
  group: server

  CONFIG SET parameter value [parameter value ...]
  summary: Set configuration parameters to the given values
  since: 2.0.0
  group: server

The important configuration commands are

  • CONFIG
  • CONFIG GET parameter [parameter …]
  • CONFIG SET parameter [parameter …]
  • CONFIG RESETSTAT
  • CONFIG REWRITE

Redis config get

The Redis config get command is used to get the values of configuration parameters in the redis instance. The syntax for the redis GET command follows the below pattern

CONFIG GET <parameter>

for example, type the below command to get the port of which the redis is running

127.0.0.1:6379> CONFIG GET port
1) "port"
2) "6379"
Redis config get

similarly, type the below command to get all the configurations present in redis.

CONFIG GET *

Redis config set

The Redis config set command is used to set the values of different variables in redis. The syntax for the redis set command follows the below pattern

CONFIG SET <parameter> <value>

For example, type the CONFIG SET command to change the redis port to 6579

127.0.0.1:6379> CONFIG SET port 6579
OK

For example, type the CONFIG SET command to change the redis port to 6579

127.0.0.1:6379> CONFIG SET port 6579
OK

Redis configuration for production

Redis configuration in production

Running a redis with default configuration in production is not recommended. Redis by default does not enable any security features. Below are a few configurations a user can change to run the redis into production.

Enable TLS/SSL in redis

One such setting is to enable SSL/TTLS in redis.To enable TLS user needs the below certificates

 tls-cert-file
 tls-key-file 
 tls-ca-cert-file 

Once you have these certificates, edit the /etc/redis.config file and add the certificates path

tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
tls-ca-cert-file /path/to/ca.crt

More details can be found here

Enable Persistence in redis

The other important configuration which a user needs to change is the persistence label. There are many persistence options available in redis like:

  • Redis persistence default(RDB)
  • Append only file(AOF)
  • No persistence
  • RDB + AOF

RDB persistence is present by default. But RDB persistence is not enough to fully persist your redis data. Users need to enable AOF persistence as well. Follow my blog on Redis persistence to understand ways to enable persistence in redis.

Enable Replica in redis

The other important property which a user needs to be set up in redis is the replica properties. Users can modify the below replica properties as per their needs.

replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

Follow this blog to set up a replica in redis.

Conclusion

I hope you have liked this tutorial. Please do let me know if you are encountering any problems while following along.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top