返回redis中集合内存储的哈希值

返回redis中集合内存储的哈希值,redis,node-redis,Redis,Node Redis,我是Redis的新手。。。比如30分钟的新体验,我正在使用node redis包构建一个web应用程序。 据我所见,用于存储网页数据的最佳数据结构是散列,但我还需要跟踪我在整个应用程序中拥有的网页。这就是我正在做的: //this is in Redis-CLI //add the page and it's data to a hash HMSET pages:/myurl url /myurl title myTitle description myDescription content m

我是Redis的新手。。。比如30分钟的新体验,我正在使用node redis包构建一个web应用程序。 据我所见,用于存储网页数据的最佳数据结构是散列,但我还需要跟踪我在整个应用程序中拥有的网页。这就是我正在做的:

//this is in Redis-CLI
//add the page and it's data to a hash
HMSET pages:/myurl url /myurl title myTitle description myDescription content myContent lang_mirror /frenchurl

//then I add the page to my set
sadd pages pages:/myurl

现在我想返回页面内的值:/myurl,是否有一个对集合的调用可以为我执行此操作?或者是node redis中内置的可以实现这一点的东西?

使用该命令进行查看,如下所示:

HGETALL pages:/myurl
根据评论编辑: 啊,所以请注意它的复杂性和内存占用:

127.0.0.1:6379> HMSET pages:/myurl url /myurl title myTitle description myDescription content myContent lang_mirror /frenchurl
OK
127.0.0.1:6379> SADD pages pages:/myurl
(integer) 1
127.0.0.1:6379> SORT pages BY nosort GET *->url GET *->title GET *->description GET *->content GET *->lang_mirror
1) "/myurl"
2) "myTitle"
3) "myDescription"
4) "myContent"
5) "/frenchurl"

注意,您可以考虑使用Lua服务器端脚本来实现这一点。

您至少需要进行两次调用,一次调用获取集合的成员,然后另一次调用获取所有哈希,下面是使用node redis的一些示例代码

redis.smembers('pages', function(err, pages) {
    var multi = redis.multi();
    for(var i=0; i<pages.length; ++i) {
        multi.hgetall(pages[i]);
    }

    multi.exec(function(err, pageData) {
         console.log(pageData);
    });
});
redis.smembers('pages',函数(err,pages){
var multi=redis.multi();

对于(var i=0;我看到了这一点,但它并不能满足我的需要。我需要能够在一次调用中获取所有哈希值,如pages:/myurl、pages:/myurl2、pages:/myurl3等,这就是为什么我想将所有页面哈希值放入一个集合中。