【问题标题】:Sending arbitrary commands to redis using ioredis使用 ioredis 向 redis 发送任意命令
【发布时间】:2018-01-30 04:18:01
【问题描述】:

是否可以使用 ioredis for Node JS 向 Redis 发送任意命令?

例如,我正在使用新的 RediSearch 模块,并希望使用以下命令创建索引:

FT.CREATE test SCHEMA title TEXT WEIGHT 5.0

如何使用 ioredis 发送此命令?

【问题讨论】:

    标签: node.js redis ioredis redisearch


    【解决方案1】:

    这会让你到达那里,虽然不确定响应编码:

    var 
        Redis = require('ioredis'),
        redis = new Redis('redis://:[yourpassword]@127.0.0.1');
    
    redis.sendCommand(
        new Redis.Command(
            'FT.CREATE',
            ['test','SCHEMA','title','TEXT','WEIGHT','5.0'], 
            'utf-8', 
            function(err,value) {
              if (err) throw err;
              console.log(value.toString()); //-> 'OK'
            }
        )
    );
    

    如果您愿意搜索node_redis,有一个pre-built RediSearch plugin 支持所有RediSearch 命令。 (披露:我写的)

    【讨论】:

    • 干杯 - 我下周回到办公室时会试试这个。与 RediSearch 模块相同!
    【解决方案2】:

    或者,这些变体也可以使用:

    redis.call('M.CUSTOMCMD', ['arg1', 'arg2', 'arg3'], 
    function(err, value) { /* ... */ });
    
    // if you need batch custom/module commands
    redis.multi([
      ['call', 'M.CUSTOMCMD', 'arg1', 'arg2', 'arg3'],
      ['call', 'M.OTHERCMD', 'arg-a', 'arg-b', 'arg-c', 'arg-d']
    ])
    .exec(function(err, value) { /* ... */ });
    

    【讨论】:

    • 不要忘记添加执行模块的call
    猜你喜欢
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2019-06-28
    • 2023-03-20
    • 2013-05-26
    • 2012-12-12
    相关资源
    最近更新 更多