2012-12-03 7 views
8

Sto cercando di eseguire il porting di un'applicazione Java su .NET, l'applicazione attualmente usa EhCache abbastanza pesantemente e insiste sul fatto che vuole supportare una consistenza forte (http://ehcache.org/documentation/get-started/coerenza-options).Redis supporta una consistenza forte

Mi piacerebbe utilizzare Redis al posto di EhCache ma Redis supporta una consistenza forte o semplicemente supporta la coerenza finale?

Ho visto parlare di un cluster Redis ma immagino che sia ancora un po 'fuori produzione.

O sto guardando questo sbagliato? Se l'istanza di Redis si trovava su un server diverso e serviva due server di frontend, quanto poteva essere grande prima che avessimo bisogno di guardare ad uno stile Master/Slave?

risposta

8

Una singola istanza di Redis è coerente. Ci sono opzioni per la coerenza tra molte istanze. @antirez (sviluppatore Redis) ha recentemente scritto un post sul blog, Redis data model and eventual consistency, e raccomandato Twemproxy per il ridisegno Redis, che ti darebbe consistenza su molte istanze.

Non conosco EhCache, quindi non posso commentare se Redis è un sostituto adatto. Un potenziale problema (porting su .NET) con Twemproxy sembra essere eseguito solo su Linux.

Quanto può essere grande una singola istanza di Redis? Dipende da quanta RAM hai. Quanto velocemente diventerà così grande? Dipende da come appaiono i tuoi dati.

Detto questo, nella mia esperienza, Redis memorizza i dati in modo abbastanza efficiente. Una app contiene informazioni per 200k utenti, 20k articoli, tutte le relazioni tra oggetti, settimanali, statistiche, ecc. (330k chiavi in ​​totale) in 400mb di RAM.

Redis è facile da usare e divertente da utilizzare. Provalo e vedi se soddisfa le tue esigenze. Se decidi di usarlo e un giorno potresti voler tagliare, segna i tuoi dati dall'inizio.

+0

Grazie, mi dà più che abbastanza per andare avanti! –

1

Il redis non è fortemente coerente fuori dalla scatola. Probabilmente dovrai applicare soluzioni di terze parti per renderlo coerente. Ecco una citazione da docs:

Scrivi sicurezza Redis cluster utilizza la replica asincrona tra i nodi, e l'ultimo di failover vince funzione di unione implicita. Ciò significa che l'ultimo set di dati master eletti sostituirà infine tutte le altre repliche. C'è sempre una finestra di tempo in cui è possibile perdere le scritture durante le partizioni. Tuttavia queste finestre sono molto diverse nel caso di un client che è collegato alla maggioranza dei master e di un client che è connesso alla minoranza di master.

Di solito è necessario disporre di replica sincrona per ottenere una consistenza forte in un sistema partizionato distribuito.