当前位置: 首页 > 面试题库 >

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

牟慎之
2023-03-14
问题内容

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

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

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

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

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

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

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

先感谢您!

注意:

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


问题答案:

经过大量 搜索 之后,我发现了一篇关于我在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

… 等等。

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

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

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

这将输出:

  • 堆栈溢出
  • 堆栈交换

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

…将输出:

  • 堆栈交换

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



 类似资料:
  • 1. 前言 在MyBatis 缓存一节中,我们介绍了 MyBatis 的多级缓存。MyBatis 的二级缓存可在多个会话中共享缓存,但是这也加大了内存的使用空间,如果二级缓存空间占有量过多势必会导致程序运行空间的不足,因此我们需要将二级缓存转移到专业的缓存服务器上。 Redis 是一个高性能的 kv 数据库,被广泛的使用在缓存服务上,MyBatis 项目开发者提供了 Redis 缓存的实现。本小节

  • 我正在尝试了解使用的最佳用例。 根据定义: “方便的类,用于启动具有循环器的新线程。然后,可以使用循环器来创建处理程序类。请注意,仍必须调用 start()。 我可能是错的,但我可以通过使用,和来实现类似的功能。那么我什么时候应该使用?举个例子会很有帮助。

  • 问题内容: 我正在一家电子商店,所以我有3张桌子: 1) 2) 3) 所以我需要使用这种算法打印相关商品:使用标签获取与所选商品最相似的商品。最多的标签是相互的-最合适的项目是 因此,的结果应为:, 对于:, 对于:, 而且我不知道如何通过一个查询按相互标记的数量来排序相似的商品 问题答案: 此查询将返回所有具有最大标签数的物品: 请看这里的小提琴。 否则,这将返回所有项目,即使没有共同标签的项目

  • 问题内容: 我正在使用JPA在基于Java EE的Web应用程序中加载和保留实体。Hibernate用作JPA的实现,但是我不使用特定于Hibernate的功能,而只能使用纯JPA。 这是一些DAO类的notice 方法: 方法很简单,但是有很大的缺点。每次调用该方法时,都会在JPA实现中的某处执行以下操作: JPQL表达式被解析并编译为SQL。 Statement或PreparedStateme

  • 我有如下所示的ES文档: 我需要一个搜索(或多个搜索)的以下答案 将来有的文档数(例如>现在) 将来有检查的文档数(例如>现在) 未来7天的日期直方图(日细分),包含当天具有的文档数 未来7天的日期直方图(日细分),包含当天的文档数 所以,我正试图找出如何有效地得到这些答案。我知道我可以/应该测试所有不同的方法,但我对ES相对来说是新手,所以说起来容易做起来难。 有人能给我一个建议(或者理想情况下

  • 问题内容: 我正在尝试将ReactJS与JSX结合使用,以创建样式指南的概念证明。 我希望能够显示如何调用执行此操作的组件的原始html 。JSX忽略了我的 这就是我试图到目前为止显示HTML代码的HTML 我很惊讶地看到它渲染。 问题答案: 如果希望将该代码用作文字块,则需要使用JSX安全字符,因此,要么JSX转义所有内容,要么在 可能的地方使用HTML实体,然后仍然需要JSX转义大括号(因为这