@esc

обработка данных в redis

Изучаю redis

Хочу посчитать ratio файлов, как соотношение трафика, что они сгенерировали к их размеру.

Есть хеши htraff и nsize, ключ — название файла, значение, соотвественно, трафик и размер. Чтобы посчитать отношение, сейчас использую такой код:

$hsize=$redis->hGetAll("hsize");
$htraff=$redis->hGetAll("hraff");

foreach ($v as $hash=>$size)
	$redis->zAdd("hratio",$htraff[$date][$hash]/$size,$hash);


Чтобы потом можно было выбрать топ50 самых популярных файлов. Код работает дико медленно (последняя строчка), что неудивительно.

Как можно переписать это место эффективнее? Идеально — обработка внутри базы (aля update files set ratio=traff/size), ну или хотя-бы массовая вставка значений. Или для такой задачи редис не подходит?
  • Вопрос задан
  • 3323 просмотра
Пригласить эксперта
Ответы на вопрос 2
4dmonster
@4dmonster
Я не спец, но в последних Redis есть поддержка LUA хранимых процедур, может это поможет?
Ответ написан
@Zloy1
Искал как-то тестирование редиса и других БД. Нашел одно, в котором автор утверждал что мускул на порядок тормознее. Но в развернувшейся дискуссии автору представили бесспорные свидетельства некорректности проведенных замеров. И обсуждение пришло к тому, что ни мускул, ни постгре практически не уступают в производительности редису.

Поэтому единственное преимущество редиса — простота использования. Если же в задачу необходимо включить вычисления на сервере, то тут я вижу одно решение — отказ от редиса в пользу мускула или постгре.

почитайте статью по ссылке и все комментарии — оно того стоит.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы