-1

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

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

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

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

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

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

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

先感谢您!

笔记:

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

4

1 回答 1

0

谷歌上搜索了很多之后,我发现了一篇很好的帖子,内容符合我在 StackOverflow 上的要求:

概括...:

1.为标签创建键值

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

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

是的,例如:

  • “s”
  • “英石”
  • “站”
  • ... 等等

    悲伤 mysite:tags:index:s 1 2

    悲伤 mysite:tags:index:st 1 2

    悲伤 mysite:tags:index:sta 1 2

    悲伤 mysite:tags:index:stack 1 2

    悲伤 mysite:tags:index:stacko 1

... 等等。

这是关于添加所有以sst ...

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

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

这将输出:

  • 堆栈溢出
  • 堆栈交换

或者...排序 mysite:tags:index:stack- by nosort get tags:*

...将输出:

  • 堆栈交换

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

于 2013-09-28T13:30:39.857 回答