php + Redis fila de mensagens simples

tipos de dados Lista Redis pode ser usado como uma simples fila de mensagens para utilização, por que é fila simples, porque a lista de alcançar a função básica de filas FIFO, mas essa fila de atraso, a prioridade da mensagem, etc. função não é suportada, é claro, atraso de fila também pode ser usado para alcançar um Redis conjunto ordenado, mas introduzir mais aqui, apenas nos dizer sobre o php uso Lista alcançar o FIFO fila função mais básica.

Pré-requisitos

php Redis funções a ser utilizado, recomenda-se usar o modo de operação estendida, como o uso mais phpredis, não pode ser estendido para instalar, operar usando o pacote predis.

produtores

O produtor é adicionado à lista nos dados, onde o teste adicionar 50 dados.
producer.php

<?php
header("Content-type:text/html;charset=utf-8");
$redis = new \Redis();
$res = $redis->connect('127.0.0.1', 6379 );
if($redis){
    //redis key
    $queue_name="test_queue";
    //插入测试数据50条
    for($i=1;$i<=50;$i++){
       $redis->lPush($queue_name,$i);
       echo 'add data:'.$i.''.PHP_EOL;
    }
}else{
    echo "connect Redis server failed";
}

consumidor

Os consumidores devem obter os dados a partir da lista em ordem cronológica.
consumer.php

<?php
header("Content-type:text/html;charset=utf-8");
$redis = new \Redis();
$res=$redis->pconnect('127.0.0.1',6379);
if($res){
    $queue_name="test_queue";
    while(true){
        $data = $redis->rpop($queue_name);
        if($data){
            echo 'get data:'.$data.''.PHP_EOL;
        }else{
            sleep(1);
        }
    } 
}else{
    echo "connect Redis server failed";
}

teste

Primeiro producer.php execução, mostrado abaixo:

Executando consumer.php, mostrado abaixo:

Pode ser visto que os dados obtidos é sequencialmente FIFO, para alcançar uma fila de mensagens simples.

Acho que você gosta

Origin www.cnblogs.com/yqzc/p/12539084.html
Recomendado
Clasificación