类似于标签缓存,并使用Redis查询以建议他们

就像StackOverflow:当您提出问题时,您需要提供一些标签。

当前,我正在查询关系数据库存储,但是我认为Redis应该有意义以缓存标签建议。

例如,它将是一个这样的集合:

sadd tags:suggestions "c#" ".net" "redis"

现在,一些用户在问一个问题,他/她可能会写“ ne”,因此Redis缓存中有一些标签可能与整个部分标签名称匹配: **.net** 。

我不知道如何将这样的tags:suggestionsRedis集相交以获得“ .net”。

还是应该使用字符串而不是集合?

先感谢您!

回答:

对于那些询问“到目前为止我已经尝试了什么”的人,请仔细检查以下问题:

回答:

经过大量 搜索 之后,我发现了一篇关于我在StackOverflow上要求的内容的好帖子:

  • http://robots.thoughtbot.com/post/48851498400/redis-partial-word-match-you-auto-complete-me

摘要…:

1.为标签创建键值

sadd mysite:tags "stackoverflow" "stack-exchange" "question" "about-redis"

2.为每个可能的组合创建一个索引

是的,例如:

  • “ s”
  • “ st”
  • “ sta”
  • … 等等

sadd mysite:tags:index:s 1 2

sadd mysite:tags:index:st 1 2

sadd mysite:tags:index:sta 1 2

sadd mysite:tags:index:stack 1 2

sadd mysite:tags:index:stacko 1

… 等等。

这是关于添加所有以 , 开头的标签的…

3.使用SORT获取标签建议:

sort mysite:tags:index:s by nosort get tags:*

这将输出:

  • 堆栈溢出
  • 堆栈交换

或者…按nosort排序mysite:tags:index:stack-取得标签:*

…将输出:

  • 堆栈交换


这似乎是一个很好的解决方案!

以上是 类似于标签缓存,并使用Redis查询以建议他们 的全部内容, 来源链接: utcz.com/qa/421766.html

回到顶部