Redis и PHP (Rediska) пересекаются на множестве

Я пытаюсь сделать некоторые трюки с набором данных графа (узел / ребра). В этом случае набор данных, где человек x следует за человеком y (прямое отношение). Я хочу загрузить эти данные (из таблицы MySQL) в Redis (он работает). Я решил использовать Rediska, потому что я использую PHP, и он кажется стабильным.

Rediska имеет очень ограниченную документацию и примеры, поэтому я надеялся, что вы, ребята, сможете мне помочь. У меня практически нет опыта работы с noSQL, особенно соглашений об именах (userid:1: следует = 2?).

Мои вопросы:

  • как загрузить набор данных о человеке х, следующих за человеком y, в набор данных redis
  • как мне найти "пересечение" (SINTER) и получить массив php (так что я получаю, что человек X и человек Y оба следуют (набор результатов) людей))
  • и, наконец, не так уж и плохо, как бы я "проследил" эти данные графа, чтобы найти связь: person x -> person y -> person z (person x и person z оба следуют за person y, следовательно, person z находится в наборе результатов)

1 ответ

Q1 Как вы загружаете набор данных о человеке х, следующих за людьми y, в набор данных повторного доступа?
вам нужно использовать набор в качестве структуры данных и добавить туда индексы людей, следующих за вами. Например, предположим, что у вас есть 10 пользователей с идентификаторами от 1 до 10, и вы хотите сказать, что человек:3, человек:5 и человек:10 - все следующие лица:2 ...

грустный человек:2: последователи 3
грустный человек:2: последователи 5
грустный человек:2: последователи 10

Это даст вам набор подписчиков для человека 2, содержащий идентификаторы 3, 5 и 10. Чтобы запросить эти данные...

пахнет человек:2: последователи

Q2 Как мне найти пересечение и получить массив php (person:x: последователи && person:y: последователи)?

sinterstore tmp person:2: подписчики person:8: подписчики
sort tmp get person: * -> name get person: * -> age 

Q3, как бы вы просмотрели данные этого графика, чтобы найти отношение: person x -> person y -> person z (person x и person z оба следуют за person y, следовательно, person z находится в наборе результатов)?

Этот вопрос не имеет смысла (по крайней мере для меня). Не могли бы вы объяснить или перефразировать это?
Другие вопросы по тегам