我遇到了新的 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 设置为对象映射的一部分,但我认为这是一个好主意,并将其放入待办事项中。
目前,您可以使用
Client.execute()
方法手动设置它,以在包含要过期的对象的键上调用 EXPIRE。
有关 EXPIRE 命令的详细信息位于 here 但它几乎只是
EXPIRE key seconds
。
Redis OM for Node.js 中对象的键由实体名称和实体 ID 组成,并用冒号分隔。因此,在您的示例中,这将类似于
Room:01FT4JWNQ2FJHQEVWXNRMWZ2QR
。
将这些放在一起,这是神奇的代码行:
await client.execute(['EXPIRE', `Room:${id}`, 3600]);
您可以使用此代码:
await repository.expire(id.toString(), 60 * 60 * 24);
您可以在这里找到详细信息: