es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿La suscripción de Redis es más rápida que la publicación?

Hay dos scripts en un servidor, redis en localhost.

Script 1:

$redis = new Redis();
$redis->connect($redisHost, $redisPort);

while (1) {
    $redis->publish('test-tt', microtime(true));
}

Script 2:

$redis = new Redis();
$redis->connect($redisHost, $redisPort);

$result = $redis->subscribe(['test-tt'], 'redisprocessor');

function redisprocessor($redis, $channel, $message) {
    print number_format(microtime(true) - $message, 12)."\n";
}

Resultados de ejecución:

 0.000058889389
 0.000087022781
 0.000006198883
 0.000027179718
 0.000051021576
 0.000074148178
-0.000004053116
 0.000016927719
 0.000045061111
 0.000064849854
-0.000011920929
 0.000020027161
 0.000045061111
 0.000066041946
-0.000012159348
 0.000011920929
 0.000033855438
 0.000057935715
 0.000082015991
 0.000101089478
 0.000140905380
 0.000092983246

¿Por qué a veces los tiempos son < 0?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    De acuerdo con el código proporcionado, los tiempos se calculan como la diferencia entre la marca de tiempo actual y el mensaje recibido de Redis. En algunos casos, los tiempos resultan ser negativos, lo que significa que el mensaje recibido de Redis tiene una marca de tiempo mayor que la marca de tiempo actual. Esto podría ocurrir debido a un desequilibrio del reloj o problemas de sincronización horaria entre el servidor que ejecuta la instancia de Redis y el servidor que ejecuta estos scripts. Otra razón podría ser la diferencia en la configuración de la zona horaria de estos servidores. Para evitar esto, se recomienda utilizar una fuente de tiempo externa confiable y sincronizar la configuración horaria de ambos servidores.

Comments are closed.