使用新的 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]);
我发现了新的 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]);