javascript 如何在ioredis中使用sort命令?

ewm0tg9j  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(137)
await ioredis.sort(
    itemsByViewsKey(),
    "BY",
    "nosort",
    "LIMIT",
    0,
    10,
    "GET",
    `${itemsKey("*")}->name`,
    `${itemsKey("*")}->views`,
    order
  );

我想按nosort对上面的逻辑进行排序,然后使用提供的偏移量和计数添加limit并获取名称和视图。这会产生以下错误消息:

error - ReplyError: ERR unknown command `sort_ro`, with args beginning with: `items:views`, `BY`, `nosort`, `LIMIT`, `0`, `10`, `GET`, `items#*->name`, `items#*->views`, `DESC`, 
    at parseError (/Users/transformhub/Desktop/VID/Redis/rbay/node_modules/redis-parser/lib/parser.js:179:12)
    at parseType (/Users/transformhub/Desktop/VID/Redis/rbay/node_modules/redis-parser/lib/parser.js:302:14) {
  command: {
    name: 'sort_ro',
    args: [
      'items:views',
      'BY',
      'nosort',
      'LIMIT',
      '0',
      '10',
      'GET',
      'items#*->name',
      'items#*->views',
      'DESC'
    ]
  },
  page: '/api/itemsByViews'
}

我也尝试了sort_ro,但仍然得到一个错误:

error - ReplyError: ERR unknown command `sort_ro`, with args beginning with: `items:views`, `BY`, `nosort`, `LIMIT`, `0`, `10`, `GET`, `items#*->name`, `items#*->views`, `DESC`, 
    at parseError (/Users/transformhub/Desktop/VID/Redis/rbay/node_modules/redis-parser/lib/parser.js:179:12)
    at parseType (/Users/transformhub/Desktop/VID/Redis/rbay/node_modules/redis-parser/lib/parser.js:302:14) {
  command: {
    name: 'sort_ro',
    args: [
      'items:views',
      'BY',
      'nosort',
      'LIMIT',
      '0',
      '10',
      'GET',
      'items#*->name',
      'items#*->views',
      'DESC'
    ]
  },
  page: '/api/itemsByViews'
}

不清楚如何做到这一点。

0wi1tuuw

0wi1tuuw1#

我只是用我创建的一些示例数据来测试这段代码。它似乎可以按照你的意愿运行:

const Redis = require("ioredis")
const redis = new Redis()

const redisDemo = async () => {

        // Creating the entries
        await redis.hset("items_1", "name", "orange")
        await redis.hset("items_1", "views", "34")

        await redis.hset("items_2", "name", "apple")
        await redis.hset("items_2", "views", "12")

        // Add the ids to a list
        await redis.lpush('ids', 1)
        await redis.lpush('ids', 2)

        // Sort using the ratings
        res = await redis.sort('ids', "BY", "nosort",
                "LIMIT", 0, 10,
                "GET", "items_*->name",
                "GET", "items_*->views",
                "desc")
        console.log(res)
};

// Call demo
redisDemo();

但要确定,我需要一些样本数据(像我的样本数据2项)。
我在测试时注意到的主要事项是,每个结果都需要一个GET。你缺少了一个:

'GET',
  'items#*->name',
  'items#*->views',

相关问题