phpredis 與 predis


區別:

 

在性能上的區別當然是擴展更好一些,但其實這兩個實現還有更大的區別,就是連接的保持。

  1. phpredis在擴展中使用c可以保持php-fpm到redis的長連接,所以一個php-fpm進程上的多個請求是復用同一個連接的。phpredis的pconnect就是長連接方式。
  2. predis是使用php的socket來連接redis,所以需要每次請求連接redis。

可以看出laravel的官方是推薦使用predis的,因為純php實現的原因,只需要composer即可安裝,非常符合laravel便捷的思想。

phpredis 和 predis 的性能差距沒有跨數量級,當然要考慮具體業務,如果業務非常依賴redis,並且單機qps需要支持的比較大,建議使用phpredis。如果你只是使用laravel使用redis實現規模小的業務,建議不用改變predis。

 

[PHPRedis]
  1. 單機方式
<?php
$client = new Redis();
$client->connect('192.168.1.1', '6379');
echo $client->get('cache_key:oneKey');

  2. 集群方式

<?php
$redis_list = ['192.168.1.1:6379','192.168.1.2:6379','192.168.1.3:6379'];
$client = new RedisCluster(NUll,$redis_list);
echo $client->get('cache_key:oneKey');

 

  3. 超時設置

<?php
$redis_list = ['192.168.1.1:6379','192.168.1.2:6379','198.168.1.3:6379', 1.5, 1.5];
$client = new RedisCluster(NUll,$redis_list);
echo $client->get('cache_key:oneKey');

timeout和read_timeout功能。就是加到master列表的后面。

timeout表示連接redis的最長時間,這里設為1.5秒,表示超過1.5秒要是還沒連接成功就返回false 。

read_timeout表示連接redis成功后,讀取一個key的超時時間,有時候讀取一個key 可能value比較大,讀取需要很長時間,這里設置1.5秒,表示要是過了1.5秒還沒讀取到數據就返回false。


  4. 擴展安裝

復制代碼
~ git clone git@github.com:phpredis/phpredis.git

~ cd phpredis

~ git fetch

~ git checout feature/redis_cluster #切換到cluster分支

~ phpize

~ ./configure

~ make

~ make install
復制代碼

 

 
 
[predis]

  1. 連接方式(集群)

復制代碼
<?php
use Predis\Client;
require __DIR__ . '/../vendor/autoload.php';

// 寫一個節點也可以
$redis_list = [
        'tcp://192.168.1.1:6379',
        'tcp://192.168.1.2:6379',
        'tcp://192.168.1.3:6379'
];

$redis = new Client($redis_list, ['cluster'=>'redis']);

echo $redis->get('cache_key:oneKey');
復制代碼

   2. 連接方式(單機)

復制代碼
Predis\Autoloader::register();
$client = new Predis\Client([
        'scheme' => $scheme,
        'host'   => $host,
        'port'   => $port,
]);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM