2017-09-17 3 views
0

En utilisant Redis, est-il possible/plausible de mettre en cache une requête de liste dynamique?Meilleure pratique Redis pour la mise en cache d'une liste

Si j'ai une base de données avec des messages sur le forum. Et je veux mettre en cache les résultats de la recherche (qui est une liste de documents), devrais-je/pourrais-je utiliser Redis pour mettre en cache ces résultats?

Répondre

1

Si vous cachez directement les résultats d'une requête, vous dupliquerez beaucoup de données dans votre cache redis, ce qui n'est pas efficace en termes de mémoire. Vous devriez plutôt utiliser deux structures,

redis
  1. Listes -> à la liste des magasins de postids qui correspondent à une requête de recherche, en utilisant LPUSH, ou vous pouvez utiliser une chaîne CSV trop au lieu de la liste des Redis.

  2. Cordes -> pour stocker le contenu du forum sur un article.

Exemple: Lorsqu'un utilisateur recherche pour dire « cache » et vous obtenez postids 1,3,4,5,6, lorsqu'un utilisateur recherche de les Redis ', vous obtenez postids 1,2,4 Pour une recherche 'mise en cache', vous stockez 1, 3, 4, 5, 6 dans une liste rouge avec la clé 'post_id_list # caching', et quand vous la récupérez, vous allez faire MGET pour les clés de 1,3,4,5,6 messages du forum. De même pour une recherche 'redis', vous devez aller chercher la liste redis avec la clé 'post_id_list # redis' et ensuite faire un MGET pour les touches de publication 1,2,4,5,8.