像标记缓存一样,查询它以使用Redis建议它们

时间:2013-09-28 11:32:55

标签: caching redis intersection

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

目前我正在查询关系数据库存储,但我相信Redis应该有意义来缓存标记建议。

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

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

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

我无法弄清楚如何设置这样的tags:suggestions Redis以获得“.net”。

或者我应该使用字符串而不是集合?

提前谢谢!

注意:

对于那些问“到目前为止我尝试了什么”的人,请仔细检查一下这个问题:我无法弄清楚该做什么,我只是在学习Redis < / em>的。 到目前为止我尝试过什么?阅读手册,使用 set 进行尝试,但我来到这里是因为我不知道我是否可以用Redis实现这样的要求......

1 个答案:

答案 0 :(得分:0)

谷歌搜索之后,我找到了一篇关于适合我在StackOverflow所要求的内容的好文章:

...摘要:

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

......等等。

这是关于添加所有以 s 开头的标签, st ......

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

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

这将输出:

  • 计算器
  • 堆叠交换

或...     sort mysite:tags:index:stack- by nosort get tags:*

...将输出:

  • 堆叠交换

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