Encontré la nueva funcionalidad de mapeo de objetos de nodo de Redis-OM, realmente no había experimentado con Redis antes, pero pensé que ahora podría ser el momento de intentarlo.
En este momento tengo una función básica configurada para crear una sala, pero me gustaría que la sala caduque después de, digamos, 24 horas (86400 segundos 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; }¿Cómo configuro el TTL o el tiempo de caducidad de un objeto utilizando el enfoque de asignación de objetos? Consulte mi esquema a continuación.
class Room extends Entity {} let schema = new Schema( Room, { code: { type: 'string' }, playlist: { type: 'array', videos: { type: 'string' } }, }, { dataStructure: 'JSON', } );En este momento, Redis OM no admite la configuración del TTL como parte del mapeo de objetos, pero creo que es una buena idea y lo pondrá en el backlog.
Por ahora, puede configurarlo manualmente usando el método Client.execute() para llamar a EXPIRE en la clave que contiene el objeto que desea que caduque.
Los detalles sobre el comando EXPIRE están aquí , pero son prácticamente solo EXPIRE key seconds .
La clave para los objetos en Redis OM para Node.js está compuesta por el nombre de la entidad y el ID de la entidad separados por dos puntos. Entonces, en su ejemplo, esto sería algo como Room:01FT4JWNQ2FJHQEVWXNRMWZ2QR .
Poniendo esto junto, aquí está la línea mágica de código:
await client.execute(['EXPIRE', `Room:${id}`, 3600]);