Redis наборы и примеры - PullRequest
       14

Redis наборы и примеры

0 голосов
/ 01 декабря 2011

Использую уже несколько недель, и я так впечатлен;сумма, которую я достиг, и время, сэкономленное только благодаря использованию наименьшего набора команд, велики.

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

Я использую Redis, чтобы просто вести учет того, какие страницы были загружены, чтобы предотвратить дублирование.

По мере загрузки каждой страницы я выполняю:

sadd wiki pagename

И проверяю каждуюстраница для существования с:

sismember wiki pagename

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

sdiff
sinter
sunion

sdiff = вычесть несколько множеств ..

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

Скажем, у вас есть книжный магазин, и вы хотите выяснить, какие жанры связаны, чтобы вы могли дать рекомендации для книг в смежных жанрах.Не совсем классические «клиенты, которые купили это, также купили X», но, скорее, рекомендуют фантастические книги людям, которые интересуются научной фантастикой, скажем.

Один из способов сделать это - назначить идентификаторкаждого покупателя и для каждой купленной книги поместите этот идентификатор в набор, представляющий жанр.Если вы хотите узнать, какие жанры связаны, вы можете использовать операции над множествами, чтобы найти интересные метрики.Одним из них является индекс Жакара, размер пересечения, деленный на размер объединения - другими словами, число клиентов, которые купили по крайней мере книгу из каждого жанра, поделенное на количество клиентов, у которых есть филиал.книга в любом из жанров.Более низкий индекс означает меньшее сходство, более высокий индекс означает более близкое сходство.Индекс ноль означает, что никто не купил книгу из обоих жанров, а индекс один означает, что каждый, кто купил книгу в одном жанре, также купил книгу в другом.

Вы также можете использовать разницу наборарассчитать количество клиентов, которые купили книгу в одном жанре, но не купили книгу в другом (и, если два жанра похожи, возможно, предложите им попробовать эту книгу из другого жанра).

0 голосов
/ 01 декабря 2011

Я думаю, sdiff , sinter и sunion обоснованно объяснены примерами в документации redis команды . Это классические групповые математические операции, которые полезны в различных ситуациях, когда вам нужно манипулировать данными между несколькими наборами, которые могут состоять из одинаковых или одинаковых элементов.

...