Je recherche un gemme rubis (ou un plugin Rails) qui résoudra les détails de Memcached de la même manière que Activerecord résume les détails de SQL. Je suis Idéalement, ce que j'aimerais, c'est de faire quelque chose comme: p> et puis être capable de faire des choses comme: p> qui rechercherait la représentation du JSON de cette classe dans Memcached et le désérialiser. Je pourrais aussi être peut-être capable de faire des choses comme: p> On dirait que quelqu'un doit avoir gratté cette démangeade d'ici et créé quelque chose dans ces lignes, mais chaque fois que je suis Google pour Un tel bijou que je continue de faire demi-tour qui aident à mettre en cache des modèles AR à l'aide de Memcached. p> p>
5 Réponses :
Je ne connais pas d'adaptateur de type Ruby Activerecord pour Memcached. Une bibliothèque similaire serait probablement difficile à créer car Memcached n'agit pas comme une base de données relationnelle.
Le résultat est que la bibliothèque ne serait pas en mesure de mettre en œuvre les 80% des fonctionnalités soutenues par ActiveRecord, alors quel est le Avantage d'une telle mise en œuvre? Vous avez déjà tout ce dont vous avez besoin dans des rails pour travailler avec MemCache avec un modèle "CRUD". P>
Rails.cache.read('key') Rails.cache.write('key', 'value') Rails.cache.delete('key') Rails.cache.increment('key', 5) Rails.cache.fetch('key') { 'value' }
C'est assez facile à mettre en œuvre. Utilisez-le comme ceci: P> # connect to memcached
StoredStruct.store = ActiveSupport::Cache::MemCacheStore.new("localhost:11211")
class Apple < StoredStruct
end
fruit = Apple.new
fruit.color = "red"
fruit.taste = "delicious"
fruit.id
#=> nil
fruit.save
#=> true
fruit.id
#=> 1
# to load any changes:
fruit.reload
Apple.find(1)
#=> fruit
Agréable. J'aime particulièrement comment vous avez mis en œuvre GET_UNIQUE_ID. Idéalement, je cherche à utiliser une bibliothèque existante plutôt que de réinventer la roue, mais si j'ai besoin de le faire à partir de zéro, j'aimerais bien voler ce que vous avez ici :)
Vous recherchez peut-être cache-argent de Nick Kallen . p>
Merci Sarah, mais c'est précisément ce que je ne cherche pas - une bibliothèque de mise en cache pour Activerecord.
Ah, je vois que j'ai mal compris votre question. Voulez-vous également vous dispenser avec ActiveRecord et stocker uniquement les objets dans Memcached? Je suis curieux quels types de choses vous stockerez.
Ouais, j'ai des données transitoires que je reçois d'une autre API. Je veux mettre en cache les données localement pour que je n'ai pas à aller de retour à cette autre API à chaque fois que je serre une demande. Les choses que je cache sont des informations de compte - des objets comme un utilisateur, une organisation, etc.
Vous pouvez jeter un coup d'œil à mon L'idée de base derrière la moneta est que tous les KVS devraient se comporter exactement comme un sous-ensemble de hachages rubis normaux. Nous soutenons: P> moneta code> GEM, qui est une chose orm'ish pour toutes sortes de magasins-clés. Vous pouvez le voir à: http://github.com/wycats/moneta/tree/master A>
cache = Moneta::Memcache.new(:server => "localhost:11211", :namespace => "me")
cache.store("name", "wycats", :expires_in => 2)
cache.update_key("name", :expires_in => 10)
C'est une bibliothèque vraiment intéressante. Merci de l'avoir posté ici!
Frais. Merci Yehuda, je vais vérifier cela. Je cherchais une excuse pour jouer avec tous ces nouveaux magasins de hachage persistants qui apparaissent.
Comme Simone Carletti écrivit, Memcached n'est pas une base de données relationnelle; Il ne peut même pas répertorier toutes ses clés. En tant que tel, tout modèle de modèle de type ACTiverecord dans MEMCACHED ne contiendra pas toutes les fonctionnalités d'ActiveRecord. Néanmoins, je pense qu'il y a une certaine valeur dans une API cohérente pour tous vos modèles, donc si c'est logique d'avoir l'un de vos modèles stocker ses données dans Memcached, vous pouvez utiliser ce module que j'ai créé à cet effet: p>