类似于标签缓存,并使用Redis查询以建议他们
就像StackOverflow:当您提出问题时,您需要提供一些标签。
当前,我正在查询关系数据库存储,但是我认为Redis应该有意义以缓存标签建议。
例如,它将是一个这样的集合:
sadd tags:suggestions "c#" ".net" "redis"
现在,一些用户在问一个问题,他/她可能会写“ ne”,因此Redis缓存中有一些标签可能与整个部分标签名称匹配: **.net** 。
我不知道如何将这样的tags:suggestions
Redis集相交以获得“ .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