我正在尝试对图(节点/边)数据集做一些技巧。在这种情况下,一组数据中人 x 跟随人 y(直接关系)。我想将这些数据(从 mysql 表)加载到 redis(让它运行)。我选择使用 Rediska因为我使用 PHP,它看起来很稳定。
Rediska 的文档和示例非常有限,所以我希望你们能帮助我。我几乎没有使用 noSQL 的经验,尤其是命名约定(userid:1:follows = 2?)。
我的问题:
- 如何将一组人 x 跟随人 y 数据加载到 redis 数据集中
- 我如何找到“相交”(SINTER) 并以一个 php 数组结束(所以我得到 X 和 Y 都跟随(结果集)的人)
- 最后一点很简单,我将如何“遍历”这个图形数据来找到一个关系:人 x -> 人 y -> 人 z(人 x 和人 z 都跟随人 y,因此人 z 在结果集)
最佳答案
Q1 如何将一组人x关注人y的数据加载到redis数据集中?
您需要使用一个集合作为数据结构,并在其中放入关注者的索引。例如,假设您有 10 个用户,其 ID 从 1 到 10,并且您想说 person:3、person:5 和 person:10 都在关注 person:2 ...
sadd person:2:followers 3 sadd person:2:followers 5 sadd person:2:followers 10
这将为您提供一组包含 ID 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 -> person y -> person z(person x 和 person z 都跟随 person y,因此 person z 在结果集中)?
This question does not make sense (to me at least). Could you explain or reword it?
关于php - Redis 和 PHP(Rediska)在集合上相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3935401/