2011-01-02 6 views
3

J'ai une application simple déployée sur heroku. Fondamentalement, les utilisateurs viennent et tapez des termes de recherche. Je voudrais ajouter une petite section sur le côté de la page qui montre les «recherches récentes». Bien que juste pour cela, je ne veux pas ajouter une base de données à mon application. J'ai lu à propos de Redis mais est-ce quelque chose pour lequel il pourrait être utilisé? Puis-je simplement pousser environ 10 termes de recherche récents sur le hachage redis et les récupérer?en utilisant redis à la place d'une base de données sur l'application heroku

Répondre

6

Oui, c'est un bon cas d'utilisation pour redis. Poussez les termes de recherche sur une liste Redis et récupérez les dix derniers lorsque vous souhaitez les afficher. Périodiquement, vous pouvez supprimer tous les dix derniers éléments de la liste pour éviter qu'ils deviennent trop volumineux.

Ajouter des articles à la liste comme ceci (en supposant REDIS est une connexion Redis):

REDIS.rpush('searches', 'Xyz') 

et récupérer les dix dernières comme ceci:

REDIS.lrange('searches', -10, -1) 

(comme un effet secondaire Redis obtiendrai le dernier élément de la liste en premier, ce qui est probablement ce que vous voulez). Les listes Redis fonctionnent comme des tableaux Ruby, les index négatifs signifient compter à partir de la fin.

Pour couronner la liste à dix éléments que vous pouvez utiliser cette commande:

REDIS.ltrim('searches', -10, -1) 

soit vous le faire à chaque fois que vous appuyez sur quelque chose, pour vous assurer que la liste ne grandit jamais, ou vous le faites périodiquement. L'opération lrange signifie que vous ne récupérerez jamais que les 10 derniers éléments, c'est donc une question de préférence.

+0

C'est super merci – ralph

Questions connexes