@Rhaps107

Из-за чего в Redis неудовлетворительная скорость при получении значения скалярного ключа?

Добрый день.
Я новичок в Redis.
Установил сервер на ОС Centos, никаких доп. настроек не производил.
В качестве клиента использую Редиску (rediska.geometria-lab.net/).

Предварительно сохранил в базу скалярный ключ:

$options = array(
     'servers' => array(
         'server1' => array('host' => '127.0.0.1', 'port' => 6379)
     )
);
$rediska = new Rediska($options);
$key = new Rediska_Key('keyName');

$key->setValue('value');


Затем запускаю скрипт на получение этого значения:

$options = array(
     'servers' => array(
         'server1' => array('host' => '127.0.0.1', 'port' => 6379)
     )
);
$rediska = new Rediska($options);
$key = new Rediska_Key('keyName');

$key->getValue();


Время работы скрипта на получение - от 8 до 15 мс. На мой взгляд, это очень много.
Например, подключение к базе PostgreSQL и выполнение запроса SELECT VERSION(); работает примерно в 3 раза быстрее.
Получение данных из самодельного файлового хранилища работает примерно в 10-100 раз быстрее Redis'a.

Это нормальная скорость для Redis? Можно ли ускорить?
  • Вопрос задан
  • 3964 просмотра
Пригласить эксперта
Ответы на вопрос 4
alekciy
@alekciy
Вёбных дел мастер
Время работы скрипта на получение - от 8 до 15 мс.

Время которое уходит на запрос к редису ни как не связанно с временем работы всегда скрипта. На общее же время влияет много фактором. Учитывая, что редиска это PHP класс, то много времени может уходить на его загрузку (видимо акселераторы не используются). А время запрос правильнее так измерять:
$start_time = microtime(true);
$key->getValue();
$end_time = microtime(true);
echo $end_time-$start_time;

У меня на дедике через сишное PHP extension на запрос уходит порядка 0.3 мс.
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Вы спрашиваете про время получения скрипта, а замеряете непонятно что (кстати, как меряете?)
Про правильный замер вам уже сказали.
Есть возможность ставить php extensions ? Если есть, то выбор очевиден - https://github.com/nicolasff/phpredis и заебейте на редиску.
Про персистент коннекшн уже ответили.
Ответ написан
@BasilioCat
проверьте скорость получения ключа через redis-cli
заменять через time
Ответ написан
Комментировать
ScorpLeX
@ScorpLeX
Есть такая опция как
persistent - Persistent connection to Redis server. By default set to false

Так же есть другие виды коннекта к базе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы