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

发布于 2024-09-28 00:23:20 字数 512 浏览 6 评论 0原文

我正在尝试使用图形(节点/边)数据集做一些技巧。在本例中是一组数据,其中人员 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 位于结果集中)

I'm trying to do some tricks with a graph (node/edges) dataset. In this case a set of data where person x follows person y (direct relation). I want to load this data (from a mysql table) into redis (have it running). I've chosen to use Rediska because I use PHP and it seems stable.

Rediska has very limited documentation and examples, so I was hoping you guys can help me. I have little to no experience with noSQL, especially the naming conventions (userid:1:follows = 2?).

My questions:

  • how do I load a set of person x follows person y data into a redis data set
  • how do I find the "intersect" (SINTER) and end up with a php array (so I get person X and person Y both follow (a result set) of people))
  • and last not but leasy, how would I 'traverse' this graph data to find a relation: person x -> person y -> person z (person x and person z both follow person y, hence person z is in the result set)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

π浅易 2024-10-05 00:23:20

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

这将为您提供一组 person 的关注者2 包含 ids 3、5 和 10。要查询此数据...

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?

Q1 How do you load a set of person x follows person y data into a redis data set?
you need to use a set as the data structure and throw in there the indexes of people following. For example, suppose you have 10 users with ids from 1 to 10 and you want to say that person:3, person:5 and person:10 are all following person:2 ...

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

This would give you a set of followers for person 2 containing the ids 3, 5 and 10. To query this data...

smembers person:2:followers

Q2 How do I find the intersect and end up with a php array(person:x:followers && person:y:followers)?

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

Q3 how would you traverse this graph data to find a relation: person x -> person y -> person z (person x and person z both follow person y, hence person z is in the result set)?

This question does not make sense (to me at least). Could you explain or reword it?
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文