返回redis中集合内存储的哈希值
我是Redis的新手。。。比如30分钟的新体验,我正在使用node redis包构建一个web应用程序。 据我所见,用于存储网页数据的最佳数据结构是散列,但我还需要跟踪我在整个应用程序中拥有的网页。这就是我正在做的:返回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
//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等,这就是为什么我想将所有页面哈希值放入一个集合中。