Redis#

To use Redis with the presented configuration, client programs need to access Redis’s socket at /var/run/redis/redis-server.sock. You need to add the running client users to the redis group. As an alternative you can also use socat to create a copy of the socket with the appropriate permissions.

Important

In this example we will use /redis as the database destination to avoid filling up the root partition.

See also

  • amazon ec2 - Redis reports read-only filesystem, but it isn’t - Server Fault [1]

  1. install the dependencies

    apt-get update
    apt-get install redis-server rsync
    
  2. create the new redis directory

    systemctl stop redis.service
    mkdir /redis
    
  3. mount the partition in /redis

  4. move the existing content

    rsync --avAX /var/lib/redis/dump.rdb /redis
    
  5. edit the configuration file like this

    /etc/redis/redis.conf#
    bind 127.0.0.1
    protected-mode yes
    port 0
    tcp-backlog 511
    unixsocket /var/run/redis/redis-server.sock
    unixsocketperm 770
    timeout 0
    tcp-keepalive 300
    daemonize yes
    supervised no
    pidfile /var/run/redis/redis-server.pid
    loglevel verbose
    logfile /var/log/redis/redis-server.log
    databases 32
    always-show-logo no
    save 900 1000
    save 300 10000
    save 60 10000000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /redis
    replica-serve-stale-data yes
    replica-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    replica-priority 100
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    replica-lazy-flush no
    appendonly no
    appendfilename "appendonly.aof"
    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
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    stream-node-max-bytes 4096
    stream-node-max-entries 100
    activerehashing no
    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
    
  6. edit the service unit file

    systemctl edit redis.service
    

    Add this content

    [Service]
    ReadWritePaths=-/redis
    
  7. restart the service

    systemctl restart redis.service
    

Footnotes