Ruby on rails Rails、灵魂伴侣、Redis删除记录

Ruby on rails Rails、灵魂伴侣、Redis删除记录,ruby-on-rails,redis,record,delete-record,Ruby On Rails,Redis,Record,Delete Record,我使用Soulmate自动完成搜索结果,但是我希望能够在一段时间后删除记录,这样它们就不会再次出现在搜索字段中。用灵魂伴侣重新加载列表似乎有点老套,没有必要 我使用json加载,并且我有一个唯一的记录“id” 如何从redis中删除该记录,使其不会再次出现在搜索结果中?使用redis cli命令直接从redis中删除该记录并非易事。 查看soulmate代码,数据结构如下: 包含所有前缀的灵魂伴侣索引:[type]集 灵魂伴侣数据:[type]散列对象,包含id和json对象之间的关联 每个前

我使用Soulmate自动完成搜索结果,但是我希望能够在一段时间后删除记录,这样它们就不会再次出现在搜索字段中。用灵魂伴侣重新加载列表似乎有点老套,没有必要

我使用json加载,并且我有一个唯一的记录“id”


如何从redis中删除该记录,使其不会再次出现在搜索结果中?

使用redis cli命令直接从redis中删除该记录并非易事。 查看soulmate代码,数据结构如下:

  • 包含所有前缀的灵魂伴侣索引:[type]集

  • 灵魂伴侣数据:[type]散列对象,包含id和json对象之间的关联

  • 每个前缀,一个灵魂伴侣索引:[type]:[prefix]排序集(带分数和id)

因此,要删除项目,您需要:

Retrieve the json object from its id (you already did it) -> id 1547
HDEL soulmate-data:[type] 1547
Generate all the possible prefixes from "Foo Baar, Baaz"
For each prefix:
   SREM soulmate-data:[type] [prefix]
   ZREM soulmate-index:[type]:[prefix] 1547
从Ruby脚本直接调用Soulmate.Loader类中提供的remove方法可能会更容易,因为它可以为您自动完成所有操作


使用Redis cli命令直接从Redis执行此操作并不简单。 查看soulmate代码,数据结构如下:

  • 包含所有前缀的灵魂伴侣索引:[type]集

  • 灵魂伴侣数据:[type]散列对象,包含id和json对象之间的关联

  • 每个前缀,一个灵魂伴侣索引:[type]:[prefix]排序集(带分数和id)

因此,要删除项目,您需要:

Retrieve the json object from its id (you already did it) -> id 1547
HDEL soulmate-data:[type] 1547
Generate all the possible prefixes from "Foo Baar, Baaz"
For each prefix:
   SREM soulmate-data:[type] [prefix]
   ZREM soulmate-index:[type]:[prefix] 1547
从Ruby脚本直接调用Soulmate.Loader类中提供的remove方法可能会更容易,因为它可以为您自动完成所有操作


是的,我最终使用了灵魂伴侣加载器类=)是的,我最终使用了灵魂伴侣加载器类=)