Рубрики
Uncategorized

10000 циклов под управлением Centos для проверки эффективности чтения-записи PHP в Redis и общую память (shm)

Автор оригинала: David Wong.

Redis и memcache , а также общая память-это данные, которые считывают память. Чтобы проверить, кто более эффективен, я провел честный тест на своей виртуальной машине Centos.

Параметры теста

Среда: Centos (Конфигурация игнорируется), Язык: PHP, Веб-сервер: Nginx, Номер теста: 10000, Тип и длина символов: Строка (1024)

Подготовьтесь к тестированию

php
// Test data
$arr = array( 1 => 
  array ('id' => '4146','attacksdfdsfdsddddddddddd' => '5.45','atk_class' => '神圣级','wufang' => '4.9','def_class' => '超神级','cefang' => '4.9','mdf_class' => '超神级','hp' => '6.43','hp_class' => '神王级','dodge' => '55','dodge_class' => 'SSSS','crit' => '50','crit_class' => 'SSS','penetrate' => '55','penetrate_class' => 'SSSS','mingz Hong'=>'51','hit_class'=>'SSSS','anti_dizziness'=>'0','anti_dizziness'dfdsfdsfdsfds_class'=>'F','anti_critical'=>'20','anti_critical_class'=>'F','tenacity'=>'0','tenacity_class'=> F',
  ),
  2 => 
  array ('id' => '414ddffff7','attack' => '5.45','atk_class' => '神圣级','wufang' => '4.95','def_class' => '超神级','cefang' => '4.95','mdf_class' => '超神级','hp' => '6.43','hp_class' => '神王级','dodge' => '55','dodge_class' => 'SSSS','crit' => '50','crit_class' => 'SSS','penetrate' => '55','penetrate_class' => 'SSSS','mingzhong' => '5 1','hit_class'=>'SSSS','anti_dizziness'=>'0','anti_dizziness_clsdfdsfdsfdsass'=>'F','anti_critical'=>'20','anti_critical_class'=>'F','tenacity'=>'0','tenacity_class'=>'F',
  ));

$str = json_encode($arr);
Echo strlen ($str); // output 1024

10 000 тестов для записи в redis

connect('127.0.0.1',6379);
$redis->auth('310c8cabcdefghf2d8abcdefd44496ac80');
$start = microtime(true) ;

for($i = 0; $i<10000; $i++) {
    $redis->set('key', $str);
}
Echo microtime (true) - $start; // five executions, with an average of about 1.7016470432281 seconds

10 000 тестов на запись в общую память (shm)

10 000 тестов на чтение в redis

connect('127.0.0.1',6379);
$redis->auth('310c8cabcdefghf2d8abcdefd44496ac80');
$start = microtime(true) ;

for($i = 0; $i<10000; $i++) {
    $redis->get('key');
}
Echo microtime (true) - $start; // five executions, with an average of 2.1236310005188 seconds

10 000 тестов на чтение в общей памяти (shm)

Список результатов

Чтение Redis: 2,1 секунды Запись: 1,7 секунды

Shm Чтение: 0,0021 секунды Запись: 0,0025 секунды

Видно, что эффект совершенно иной.