2010-04-15 3 views
3

Недавно я нашел хорошее сообщение в блоге, представляющее 2 подхода для отслеживания онлайн-пользователей веб-сайта с помощью Redis.2 подхода для отслеживания онлайн-пользователей с Redis. Какой из них быстрее?

1) Smart-ключи и настройки их действия http://techno-weenie.net/2010/2/3/where-s-waldo-track-user-locations-with-node-js-and-redis

2) Set-S и пересекает http://www.lukemelia.com/blog/archives/2010/01/17/redis-in-practice-whos-online/

Вы можете судить, что один должен быть быстрее и почему?

ответ

4

Для того, чтобы узнать, находится ли конкретный пользователь в сети, первый способ будет намного быстрее - ничего не происходит быстрее, чем чтение одного ключа.

Поиск пользователей на определенной странице не так ясен (я не видел жестких номеров при работе с пересечением или подстановочными клавишами), но если набор достаточно велик, чтобы вызвать проблемы с производительностью в любой реализации, Практически все они отображают их.

Для сопоставления пользователей со списком друзей я бы, вероятно, пошел и с первым подходом - даже несколько сотен операций get (проверка статуса всех в списке) должны превосходить пересечение на нескольких наборах, если эти множества имеют большое количество записей и их трудно поддерживать.

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

+0

Если ваша библиотека redis конвейерна, несколько сотен операций GET могут быть очень медленными из-за латентности сети. – rpetrich

+0

https://stackoverflow.com/users/101970/tom-clarkson SADD и SISMEMBER - это O (1), которые являются такой же сложностью, как SET и GET, поэтому, с уважением, почему вы говорите: «ничего не происходит быстрее, чем чтение один ключ "? :-) У вас есть статистика, показывающая, что SET/GET работает намного лучше, чем SADD/SISMEMBER? Я имею в виду это из подлинного интеллектуального любопытства и без каких-либо намерений начать пламенную войну ... – Joel

+0

@Joel сложность - это только один аспект производительности, и хотя две операции могут проявлять такую ​​же сложность, это не обязательно означает, что они имеют такая же производительность. Что касается этой темы, на моем ноутбуке, redis-benchmark делает 48K/sec SET операций против 52K/sec SADDs :) –

 Смежные вопросы

  • Нет связанных вопросов^_^