Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis删除排序集中的项_Redis - Fatal编程技术网

Redis删除排序集中的项

Redis删除排序集中的项,redis,Redis,我正在使用Redis在我的社交网络应用程序中实现一个类似Instagram/facebook的“feed”系统 我有一个键“user:id:feed”,其中包含一组指向图片的已排序id。我想知道的是,当一张特定的照片被删除时,我如何确保包含该照片id的所有提要中的照片id也被删除 我是否需要遍历每个提要集并删除它?这是redis中的常见模式吗 多亏了Redis中的常见模式是交叉引用各种数据结构中的项目。您必须显式地这样做(Redis没有自动引用完整性机制) 在这里,提要和照片之间存在多对多关系。

我正在使用Redis在我的社交网络应用程序中实现一个类似Instagram/facebook的“feed”系统

我有一个键
“user:id:feed”
,其中包含一组指向图片的已排序id。我想知道的是,当一张特定的照片被删除时,我如何确保包含该照片id的所有提要中的照片id也被删除

我是否需要遍历每个提要集并删除它?这是redis中的常见模式吗


多亏了

Redis中的常见模式是交叉引用各种数据结构中的项目。您必须显式地这样做(Redis没有自动引用完整性机制)

在这里,提要和照片之间存在多对多关系。如果您需要添加/删除提要和照片,您可能需要使用两种不同的数据结构来具体化这种关系

user:id:feed  ->  sorted sets of photo:n (referring to photos)
photo:n       ->  set of user:id:feed (referring to feeds)
因此,您可以高效地从源中检索照片,并从照片中检索源。例如,要删除照片,请执行以下操作:

  • 从照片中检索提要:n
  • 管道化多个ZREM操作(每个用户一个:id::feed)

因此,删除操作最终要花费两次往返时间。通过使用Lua服务器端脚本,可以将往返次数减少到1次。

Redis中的常见模式是交叉引用各种数据结构中的项。您必须显式地这样做(Redis没有自动引用完整性机制)

在这里,提要和照片之间存在多对多关系。如果您需要添加/删除提要和照片,您可能需要使用两种不同的数据结构来具体化这种关系

user:id:feed  ->  sorted sets of photo:n (referring to photos)
photo:n       ->  set of user:id:feed (referring to feeds)
因此,您可以高效地从源中检索照片,并从照片中检索源。例如,要删除照片,请执行以下操作:

  • 从照片中检索提要:n
  • 管道化多个ZREM操作(每个用户一个:id::feed)
因此,删除操作最终要花费两次往返时间。通过使用Lua服务器端脚本,您可以将往返次数减少到1次。

我的2美分:

使用MongoDB实现这样的提要结构更合适,因为它还可以处理嵌套结构中基于id的数据操作。您可以将用户的所有相关信息保留在一行中,然后在一次呼叫中检索并删除它。

我的两分钱:

使用MongoDB实现这样的提要结构更合适,因为它还可以处理嵌套结构中基于id的数据操作。您可以将用户的所有相关信息保留在一行中,然后在一次调用中检索并删除它