A cosa serve Redis in Discourse?

Currently my Discourse install uses a DigitalOcean managed PostgreSQL database and a DigitalOcean managed Redis instance. Is the managed Redis server necessary?

Does Discourse store anything permanent in Redis or is it only used for caching/other kinds of temporary data?

My current setup (definitely overkill but it will make scaling easy if it’s needed one day):

  • DigitalOcean managed PostgreSQL server
  • DigitalOcean managed Redis instance
  • DigitalOcean Load Balancer
  • Two DigitalOcean droplets, each running Discourse

A simpler setup I was thinking about is:

  • DigitalOcean managed PostgreSQL server
  • A single server running both Redis and the Discourse application with a floating IP to fallback to a backup server if needed.

My current setup can seemlessly swap web servers without the user noticing because of the external Redis server, I think the simpler setup will log out users if the fallback server is needed, is this the main downside of having Redis on the same server as Discourse?

Thanks,
Francis

7 Mi Piace

+1 Anche io ho la stessa domanda, mi piacerebbe davvero molto vedere se qualcuno potrebbe essere così gentile da spiegare un po’ di più su Redis e Discourse :kissing_smiling_eyes:

Discourse utilizza Sidekiq, un pianificatore di job open source scritto in Ruby. Sidekiq in generale (e di default) esegue solo i job e non si occupa della pianificazione, o almeno è quanto indicano i riferimenti (magari le cose sono cambiate?); tuttavia, la mia comprensione è che la versione enterprise di Sidekiq includa la pianificazione OOTB (out of the box).

Sidekiq utilizza Redis come archivio di strutture dati in memoria ed è anch’esso scritto in Ruby. Sidekiq legge i job da una coda Redis, utilizzando il modello First In First Out (FIFO), per elaborare i job. L’elaborazione dei job è asincrona e permette a un thread web di servire richieste in tempo reale, invece di elaborare compiti pesanti che possono essere “pianificati” per essere eseguiti in background.

Sidekiq è descritto come un “software ben noto per l’elaborazione di code” ed è utilizzato da Discourse per job progettati per essere eseguiti come attività in background e non direttamente nelle richieste dell’applicazione web.

Puoi esplorare i molti tipi di job eseguiti da Discourse, basandoti sulla breve panoramica sopra, nel repository di Discourse:

Redis può essere utilizzato da Discourse in altre parti dell’architettura; ma, per quanto mi viene in mente, l’uso principale di Redis è come “compagno” di Sidekiq, il “tizio dei job”. I membri del team di Discourse più esperti di me sull’HLA di Discourse possono certamente fornire maggiori dettagli su come Redis viene utilizzato all’interno dell’HLA di Discourse.

Spero che questo sia d’aiuto.

9 Mi Piace

Questo è un post un po’ datato, ma ho pensato di ampliare questa risposta dato che mi sono imbattuto in questa questione mentre cercavo altre informazioni su Discourse e Redis.

Ecco una risposta di un membro del team su cosa altro oltre a Sidekiq usa Discourse per Redis:

5 Mi Piace

Ciao @Francis, qual è stata la tua stima di fatturazione per tutti quei servizi DigitalOcean? Sono solo curioso perché ho intenzione di installare lo stesso servizio su Google Cloud (200$ gratis). Il prezzo del servizio Discourse SaaS è fuori dal mio budget.

Un’ipotesi azzardata è che un load balancer, redis e postgres costino $50/mese oltre a quanto paghi per il/i droplet.

Se sei preoccupato per i costi, allora consiglio un droplet da 2 GB e di raddoppiarlo se non è sufficiente.