Join webdis服务器端连接

Join webdis服务器端连接,join,redis,Join,Redis,首先,请原谅,如果我误解了一些概念,这对我来说有点新鲜。我必须从webdis服务器检索大量对象。目前的做法是: 获取所有对象ID(serverUrl/ZRANGE/objects\u index/-X/-1) 对于每个对象,获取属性(serverUrl/get/attributeY\u objectdx) 因此,如果我有X个具有Y属性的对象,我必须执行X*Y+1 REST调用来获取所有he数据,这看起来非常低效 据我所知,是执行连接的命令,但WebDISRESTAPI不支持该命令(请参阅第页的I

首先,请原谅,如果我误解了一些概念,这对我来说有点新鲜。我必须从webdis服务器检索大量对象。目前的做法是:

  • 获取所有对象ID(serverUrl/ZRANGE/objects\u index/-X/-1)
  • 对于每个对象,获取属性(serverUrl/get/attributeY\u objectdx)
  • 因此,如果我有X个具有Y属性的对象,我必须执行X*Y+1 REST调用来获取所有he数据,这看起来非常低效

    据我所知,是执行连接的命令,但WebDISRESTAPI不支持该命令(请参阅第页的Ideas,TODO)

    有没有我缺少的更简单的解决方案

    我应该重新组织数据的存储方式吗

    我可以使用WebSocket通过json发送MULTI/EXEC命令吗:

    jsonSocket.send(JSON.stringify(["MULTI", "EXEC", "GET", "etc..."]));
    

    首先,不是每个属性有一个键,而是应该考虑使用哈希对象,这样每个对象都有一个键,它与多个属性关联。好处是可以使用HGETALL命令一次检索给定对象的所有属性。您没有X*Y+1呼叫,只有X+1

    而不是:

    SET user:1:name    Didier
    SET user:1:age     41
    SET user:1:country FR
    
    你可以:

    HMSET user:1 name Didier age 41 country FR
    
    然后,webdis支持HTTP 1.1和websocket管道,Redis服务器支持使用自己的协议进行管道。因此,应该可以向webdis发送多个命令,等待结果(返回的顺序相同),同时只需支付一次往返费用

    例如,webdis页面上提供的websocket示例实际上执行一次往返以执行两个命令:

    var jsonSocket = new WebSocket("ws://127.0.0.1:7379/.json");
    jsonSocket.onopen = function() {
    
        console.log("JSON socket connected!");
        jsonSocket.send(JSON.stringify(["SET", "hello", "world"]));
        jsonSocket.send(JSON.stringify(["GET", "hello"]));
    };
    jsonSocket.onmessage = function(messageEvent) {
        console.log("JSON received:", messageEvent.data);
    };
    
    您可以执行类似的操作,并聚合几个HGETALL命令,以按批处理n个对象检索数据


    请注意,对于ReDIS本身(即没有WebDIS),我可能会推荐相同的策略(流水线HGETALL命令)。

    首先,不是每个属性有一个键,而是应该考虑使用哈希对象,这样每个对象得到一个键,与几个属性相关。好处是可以使用HGETALL命令一次检索给定对象的所有属性。您没有X*Y+1呼叫,只有X+1

    而不是:

    SET user:1:name    Didier
    SET user:1:age     41
    SET user:1:country FR
    
    你可以:

    HMSET user:1 name Didier age 41 country FR
    
    然后,webdis支持HTTP 1.1和websocket管道,Redis服务器支持使用自己的协议进行管道。因此,应该可以向webdis发送多个命令,等待结果(返回的顺序相同),同时只需支付一次往返费用

    例如,webdis页面上提供的websocket示例实际上执行一次往返以执行两个命令:

    var jsonSocket = new WebSocket("ws://127.0.0.1:7379/.json");
    jsonSocket.onopen = function() {
    
        console.log("JSON socket connected!");
        jsonSocket.send(JSON.stringify(["SET", "hello", "world"]));
        jsonSocket.send(JSON.stringify(["GET", "hello"]));
    };
    jsonSocket.onmessage = function(messageEvent) {
        console.log("JSON received:", messageEvent.data);
    };
    
    您可以执行类似的操作,并聚合几个HGETALL命令,以按批处理n个对象检索数据


    请注意,对于Redis本身(即没有webdis),我可能会推荐相同的策略(管道化HGETALL命令)。

    数据的组织方式似乎是为了优化写入速度。我还试图摆弄websocket,但它们的具体实现与chrome不兼容。是的,它只支持Hixie-76,因此它与chrome从版本6到版本14兼容。似乎数据是以这种方式组织的,以优化写入速度。我还试着摆弄websocket,但它们的具体实现与chrome不兼容。是的,它只支持Hixie-76,所以它与chrome 6到14版兼容。