使用新的 Redis-OM 和节点对象映射设置 TTL(过期)

问题描述 投票:0回答:3

我遇到了新的 Redis-OM 节点对象映射功能,我之前没有真正尝试过 Redis,但我想现在可能是时候尝试一下了。

现在我已经设置了一个用于创建房间的基本功能,但我希望房间在 24 小时(86400 秒 iirc)后过期。

export async function createRoom(data) {
    await connect();

    const repository = new Repository(schema, client);

    const room = repository.createEntity(data);

    const id = await repository.save(room);

    return id;
}

如何使用对象映射方法设置对象的 TTL 或过期时间...请参阅下面的架构。

class Room extends Entity {}
let schema = new Schema(
    Room,
    {
        code: { type: 'string' },
        playlist: { type: 'array', videos: { type: 'string' } },
    },
    {
        dataStructure: 'JSON',
    }
);

javascript node.js redis orm ttl
3个回答
2
投票

目前,Redis OM 不支持将 TTL 设置为对象映射的一部分,但我认为这是一个好主意,并将其放入待办事项中。

目前,您可以使用

Client.execute()
方法手动设置它,以在包含要过期的对象的键上调用 EXPIRE。

有关 EXPIRE 命令的详细信息位于 here 但它几乎只是

EXPIRE key seconds

Redis OM for Node.js 中对象的键由实体名称和实体 ID 组成,并用冒号分隔。因此,在您的示例中,这将类似于

Room:01FT4JWNQ2FJHQEVWXNRMWZ2QR

将这些放在一起,这是神奇的代码行:

await client.execute(['EXPIRE', `Room:${id}`, 3600]);

0
投票

您可以使用此代码:

await repository.expire(id.toString(), 60 * 60 * 24);

0
投票

您可以在这里找到详细信息:

https://redis.com/blog/redis-om-node-js/

© www.soinside.com 2019 - 2024. All rights reserved.