【问题标题】:Get values by array of keys from redis cluster in nodejs从nodejs中的redis集群中通过键数组获取值
【发布时间】:2017-02-15 05:40:11
【问题描述】:

我正在尝试通过 nodejs 中的 redis 集群中的键数组获取值, 它返回错误:“管道中的所有键都应该属于同一个插槽” 这是代码:

    private GETALL_P(keys: string[], cb: any) {

    var pipeline = this.client.pipeline();

    keys.forEach(function (key: string, index: Number) {
        pipeline.get(key);
    });

    pipeline.exec(function (err: any, result: any) {
        cb(err, result);
    });
}

我搜索了,有人说:它不适用于集群。 有没有办法做到这一点?

【问题讨论】:

    标签: node.js redis redis-cluster


    【解决方案1】:

    redis集群上的多键操作需要在同一个节点上,这就是报错的地方。

    要将所有必需的密钥强制到同一个节点,您可以使用key hash tags,请记住,如果您对所有密钥执行此操作而不仅仅是某个子集,那么您使用集群是毫无意义的.

    【讨论】:

    • 感谢您的回复。问题是数据已经被不同的服务保存在redis中。我只读取了那些数据。
    • 你必须使用管道吗?非流水线应该可以正常工作,只是会慢一些。
    • 是的,当我使用管道时会发生错误,但非管道会抛出此错误“ERR EXEC without MULTI”。 --> redis.multi({ pipeline: false });
    猜你喜欢
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2019-06-02
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多