类似标签缓存的东西,并查询它以使用 Redis 推荐它们 [英] Something like a tag cache and querying it for suggesting them using Redis
问题描述
这就像 StackOverflow:当您提出问题时,您需要提供一些标签.
It would be like StackOverflow: when you ask a question you need to provide some tags.
目前我正在查询关系数据库存储,但我认为 Redis 应该可以缓存标签建议.
Currently I'm querying the relational database store, but I believe that Redis should make sense in order to cache tag suggestions.
例如,这将是一个这样的集合:
For example, it would be a set like this:
sadd tags:suggestions "c#" ".net" "redis"
现在有些用户在问一个问题,他/她可能会写ne"所以Redis缓存中有一些标签可能与整个部分标签名称匹配:.net.
Now some user is asking a question and he/she may write "ne" so there's some tag in the Redis cache that may match the whole partial tag name: .net.
我不知道如何与这样的 tags:suggestions
Redis 集相交以获得.net".
I can't figure out how I would intersect such tags:suggestions
Redis set in order to get ".net".
还是应该使用字符串而不是集合?
Or should I use a string instead of a set?
先谢谢你!
对于那些问我到目前为止尝试过什么"的人,请仔细检查这个问题:我不知道该怎么做,我只是在学习 Redis.到目前为止我尝试了什么?阅读手册,尝试使用set,但我来到这里是因为我不知道我是否可以用Redis实现这样的需求......
For those asking "what I've tried so far", please double-check the question: I can't figure out what to do, I'm just learning Redis. What I've tried so far? Reading the manual, trying it using a set, but I came here because I don't know if I can implement such requirement with Redis...
推荐答案
经过谷歌搜索很多次之后,我找到了一篇很好的帖子,内容符合我在 StackOverflow 上的要求:
After googling a lot, I found a good post about something that fits what I was asking for here at StackOverflow:
总结...:
sadd mysite:tags "stackoverflow" "stack-exchange" "question" "about-redis"
2.为每个可能的组合创建一个索引
是的,例如:
- "s"
- st"
- 斯塔"
...等等
- "s"
- "st"
- "sta"
... and so on
sadd mysite:tags:index:s 1 2
sadd mysite:tags:index:s 1 2
sadd mysite:tags:index:st 1 2
sadd mysite:tags:index:st 1 2
sadd mysite:tags:index:sta 1 2
sadd mysite:tags:index:sta 1 2
sadd mysite:tags:index:stack 1 2
sadd mysite:tags:index:stack 1 2
sadd mysite:tags:index:stacko 1
sadd mysite:tags:index:stacko 1
...等等.
这是关于添加所有以s、st...开头的标签
It's about adding all tags that start with s, st...
sort mysite:tags:index:s by nosort get tags:*
这将输出:
- stackoverflow
- 堆栈交换
或者...排序 mysite:tags:index:stack- 通过 nosort 获取标签:*
Or... sort mysite:tags:index:stack- by nosort get tags:*
...将输出:
- 堆栈交换
这似乎是一个很好的解决方案!
It seems to be a good solution!
这篇关于类似标签缓存的东西,并查询它以使用 Redis 推荐它们的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!