Redis和PHP(Rediska)在集合上交叉

时间:2010-10-14 16:30:13

标签: php nosql redis social-graph rediska

我正在尝试使用图形(节点/边缘)数据集做一些技巧。在这种情况下,一组数据,其中人x跟随人y(直接关系)。我想将这些数据(从mysql表)加载到redis(让它运行)。我选择使用Rediska因为我使用PHP而且看起来很稳定。

Rediska的文档和示例非常有限,所以我希望你们可以帮助我。我对noSQL几乎没有经验,尤其是命名约定(userid:1:follow = 2?)。

我的问题:

  • 如何加载一组人x跟随人y数据到redis数据集
  • 如何找到“交叉”(SINTER)并最终得到一个php数组(所以我得到人X和Y都跟随(结果集)的人))
  • 最后不是轻松,我将如何'遍历'此图表数据以找到关系:person x - >人y - >人z(人x和人z都跟随人y,因此人z在结果集中)

1 个答案:

答案 0 :(得分:1)

Q1 如何加载一组人x跟随人y数据到redis数据集
你需要使用一个集合作为数据结构,并在那里投入以下人员的索引。例如,假设你有10个用户,其中id为1到10,你想说那个人:3,人:5和人:10都是跟随人:2 ...

sadd person:2:followers 3
sadd person:2:followers 5
sadd person:2:followers 10

这会为你提供一组包含ids 3,5和10的人2。要查询这些数据......

smembers person:2:followers

Q2 如何找到相交并最终得到一个php数组(person:x:followers&& person:y:followers)

sinterstore tmp person:2:followers person:8:followers
sort tmp get person:*->name get person:*->age 

Q3 您将如何遍历此图表数据以查找关系:person x - >人y - >人z(人x和人z都跟随人y,因此人z在结果集中)

This question does not make sense (to me at least). Could you explain or reword it?