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

Setting the TTL (expire) using new Redis-OM & Node Object Mapping

我发现了新的 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',
    }
);

目前,Redis OM 不支持将 TTL 设置为对象映射的一部分,但我认为这是个好主意,将把它放在 backlog 中。

目前,您可以手动设置它,使用 Client.execute() 方法对包含您要过期的对象的键调用 EXPIRE。

关于 EXPIRE 命令的详细信息是 here,但它几乎只是 EXPIRE key seconds

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

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

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