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

标签 php nosql redis social-graph rediska

我正在尝试对图(节点/边)数据集做一些技巧。在这种情况下,一组数据中人 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/

相关文章:

ruby-on-rails - rails : Namespace redis on a per-request basis for a multi-tenency app

node.js - 如何在nodejs的多个实例中共享一个对象?

php - 如何使用 Jquery 在 DatePicker 中设置昨天日期

php - 在php中将日期格式更改为word

php - Doctrine 级联实体清理

python - pycassa ColumnFamily.get_range() 与 Lazyboy 的等效项是什么?

php - 在函数之外传递变量 php

reactjs - 约会应用程序 - 我需要在 Firebase Firestore 中使用哪种数据库结构来查询除不喜欢我的用户之外的所有用户?

redis - 可以在运行的 redis 实例上禁用快照吗?

redis - 编写查询以将多个值添加到 REDIS 哈希中的键?