User Tools

Site Tools


doc:appunti:linux:sa:redis_2nd_instance

Istanze multiple del database Redis

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

Configurazione di Nextcloud

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,
  ),
);

Web References

doc/appunti/linux/sa/redis_2nd_instance.txt · Last modified: 2024/03/19 12:25 by niccolo