Il servizio Redis prevede il concetto di database multipli; l'installazione predefinita Debian 12 Bookworm prevede la creazione di 16 database distinti (numerati da 0 a 15) tramite l'opzione databases 16 del file di configurazione /etc/redis/redis.conf
. Tuttavia tale concetto è molto diverso da quello di database dei motori SQL tradizionali (es. MySQL o PostgreSQL); se sullo stesso host si hanno diverse applicazioni che necessitano di un database Redis è opportuno creare ulteriori istanze di Redis piuttosto che condividere la stessa istanza.
Nel nostro esempio l'istanza predefinita di Redis (in ascolto su localhost:6379/TCP) viene usata da Rspamd per gestire i propri moduli greylist e antivirus. Avendo installato Nextcloud abbiamo bisogno di una ulteriore istanza di Redis per gestire il transactional file locking.
Creare un file /etc/redis/redis-nextcloud.conf copiando l'originale redis.conf. Modificare le seguenti impostazioni:
port 0 unixsocket /run/redis/redis-nextcloud.sock unixsocketperm 770 pidfile /run/redis/redis-nextcloud.pid logfile /var/log/redis/redis-nextcloud.log dbfilename dump-nextcloud.rdb
Abilitare e avviare il servizio:
systemctl enable redis-server@nextcloud.service --now
Verificare che sia possibile connettersi alla nuova istanza tramite Unix socket:
redis-cli -s /run/redis/redis-nextcloud.sock redis /run/redis/redis-nextcloud.sock> ping PONG
adduser www-data redis
Dopo aver cambiato appartenenza al gruppo, riavviare i processi:
systemctl restart php8.2-fpm.service systemctl restart apache2.service
Nel file di configurazione [NEXTCLOUD_HOME]/config/config.php si aggiungono gli opportuni valori alla variabile $CONFIG:
$CONFIG = array ( ... 'filelocking.enabled' => true, 'memcache.local' => '\OC\Memcache\Redis', 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array ( 'host' => '/run/redis/redis-nextcloud.sock', 'port' => 0, 'timeout' => 0.0, ), );