come creare la struttura di archiviazione di messaggistica in redis?

0

Sto sviluppando Node.js, l'applicazione di chat basata su Redis in PHP. Ho avuto un'idea sulla struttura del logger di chat, ma ho richiesto suggerimenti su come e cosa scegliere la corretta struttura dei dati per creare il database Redis per l'applicazione di logger.

So che Redis ha molte opzioni sulla struttura dei dati per implementare un'applicazione di chat db. ma ho richiesto linee guida che come potrei creare db efficiente in Redis per l'architettura della chat proposta.

Dovrei dare la mia idea proposta per implementare l'intera struttura dei dati in Redis, ma non so se sia efficiente.

  1. channels (unordered set)

{channel1 , channel2, channel3 ... channelN}

  1. users (unordered set)

{user1, user2, user3, user4, user5 ... userN}

  1. user channel (user related all channels) : (sorted list)
 user1 : {channel1, channel2, channel3}
 user2 : {channel1, channel4, channel7, channel3}
 user3 : {channel2, channel8, channel9}
 user4 : {channel3, channel8}
 user5 : {channel3, channel9, channel10}
  1. message : (list)

{message: message1, sender: user1, receiver: user2, timestamp: 123456}

  1. channel_messages : (channel related messages) : (sorted list)

channe1 : {1, 3, 4, 5, 6} channel2: {7, 8, 9, 10, 11} Above structure fetch all messages of channel.

Ho riscontrato i seguenti problemi in redis:

I redis hanno comandi di intersezione per ottenere un set comune, ma come recuperare i canali univoci per conversazioni specifiche, come user1 e user2 con 2 canali comuni channel1 e channel3, ma ora rilasciano

  • se la comunicazione one to one sta accadendo, come ho potuto identificare quel canale che userò per la comunicazione proposta perché l'intersezione impostata può produrre 2 risultati channel1, channel3.

Sembra che,    canale1 è utilizzato per la comunicazione tra (utente1, utente2)    canale3 è utilizzato per la comunicazione tra (utente1, utente2, utente3, utente4).

Quindi, come posso risolvere questo problema?

Issue Set :
   user1 : {channel1, channel3}
   user2 : {channel1, channel3}   
   user4 : {channel3}
   user5 : {channel3}
    
posta Dipak chavda 03.11.2015 - 14:40
fonte

0 risposte

Leggi altre domande sui tag