我正在使用MySQL Node和Redis Stream接收传入的更新消息。调用API端点时,将使用UPDATE
查询来更新数据。如果我调用SELECT
查询以检索数据,则我obtained old data before update
。因此,我使用redis流来广播传入的消息,并使用setTimeout
5秒钟来执行SELECT
查询。它可以工作,但有时由于MySQL数据库更新而无法实现。
更新查询
await connection.queryAsync('UPDATE ' + dbconfig.property_table + ' SET ? WHERE id = ?',[data,id]);
broadcastMessage('updateProperty',{ id }); // broadcast method send id to incomingMessage
Redis流
export async function broadcastMessage (stream, event) {
await redis.xadd(stream, event) // xadd custom Redis prototype for streaming message
}
// incomingMessage
setTimeout(() => {
await updateProperty(id);
},5000); // after 5 seconds received incoming message, get latest property and update to other place.
问题
在单个Express API中更新后获取最新属性数据不一致。
在通过SELECT
查询的单个API中,是否仍要检索(UPDATE
)最新数据?