6
votes

Y a-t-il un wrapper comme une ormes pour memcached

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 pas à la recherche de quelque chose pour aider les modèles de cache Activerecord dans Memcached. Je suis sûr qu'il y a environ 4215 gemmes qui aideront avec ce problème.

Idéalement, ce que j'aimerais, c'est de faire quelque chose comme: xxx

et puis être capable de faire des choses comme: xxx

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: xxx

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.


0 commentaires

5 Réponses :


3
votes

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' }


0 commentaires

2
votes

C'est assez facile à mettre en œuvre. XXX PRE>

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


1 commentaires

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 :)



0
votes

Vous recherchez peut-être cache-argent de Nick Kallen .


3 commentaires

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.



11
votes

2 commentaires

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.



1
votes

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:

http: // blog. slashpoundbang.com/post/1455548868/MemCachemodel-Make-any-Ruby-Object-that-persists-in


0 commentaires