2016-08-25 1 views
0

J'ai le script Lua suivant exécuté dans un environnement Redis:Redis + Lua. Puis-je retourner le résultat sans le stocker en mémoire?

local result = {} 
    local comment_ids = redis.call('smembers', 'comment:all') 
    for _, key in ipairs(comment_ids) do 
     local comment_text = ... 
     local article_name = ... 
     local user_name = ... 

     result[#result+1] = {article_name, user_name, comment_text} 
    end 
    return result 

Basiquement, ce qui se passe ici est que nous remplissons table 'résultat' avec des données agrégées (article_name, user_name, comment_text) et de le retourner. Pour autant que je sache, cette table sera entièrement stockée en mémoire jusqu'à la déclaration de retour.

Ma question principale est, est-ce que je peux retourner des données rangée par rangée, sans stocker la pleine réponse dans la mémoire?

Et aussi, est-il approprié d'utiliser des scripts Lua à des fins d'agrégation? (Comme j'essaie de le faire ici). Merci.

Répondre

0

Non, vous ne pouvez pas diffuser le résultat.

WRT le aussi - il est très approprié.

+0

Merci pour votre aide! Je viens de commencer à expérimenter avec Redis et Lua, donc je ne sais presque rien des pratiques courantes dans ce domaine, – Informhunter

+0

Tout le monde commence un jour, et vous semblez être sur la bonne voie. –