Ohm e Redis: quando usare insieme, la lista o la raccolta?
-
23-10-2019 - |
Domanda
Qual è la differenza tra una collezione e un set o un elenco quando si utilizza Ohm e Redis?
Molti degli esempi Ohm utilizzare una lista piuttosto che una collezione (vedi lista doc per sé ):
class Post < Ohm::Model
list :comments, Comment
end
class Comment < Ohm::Model
end
Qual è la logica di questa scelta di design?
Soluzione
Lista - ordinato di elementi. Quando si richiede l'intero elenco, si ottengono gli articoli ordinati il ??modo in cui li metti nella lista.
Collection - non ordinata raccolta ??em> di elementi. Quando si richiede la raccolta, gli elementi possono essere visualizzati in ordine casuale (ad esempio non ordinato). **
Nel tuo esempio, i commenti sono classificati in ordine.
** So che casuale non è la stessa di non ordinata, ma lo fa illustrare il punto.
Altri suggerimenti
Proprio per espandere sulla risposta Ariejan.
-
Lista - ordinato. Simile a un array in Ruby. Usato per le code e gli elementi mantenendo ordinato.
-
Set - una lista non ordinata. E ' si comporta ??em> simile a un array in Ruby, ma è ottimizzato per le ricerche più veloci.
-
Collection -. Utilizzato in combinazione con di riferimento , che fornisce un modo semplice di rappresentare Associazioni
In sostanza, le collezioni e riferimenti sono metodi di convenienza per trattare con le associazioni. Quindi questo:
class Post < Ohm::Model
attribute :title
attribute :body
collection :comments, Comment
end
class Comment < Ohm::Model
attribute :body
reference :post, Post
end
è una scorciatoia per il seguente:
class Post < Ohm::Model
attribute :title
attribute :body
def comments
Comment.find(:post_id => self.id)
end
end
class Comment < Ohm::Model
attribute :body
attribute :post_id
index :post_id
def post=(post)
self.post_id = post.id
end
def post
Post[post_id]
end
end
Per rispondere si domanda iniziale circa la logica per la scelta di progettazione -. Collezioni e riferimenti sono stati introdotti per fornire una semplice API per rappresentare le associazioni