【问题标题】:Implementing Auto-complete: Redis vs. Memcached, do I need persistence?实现自动完成:Redis vs. Memcached,我需要持久化吗?
【发布时间】:2011-12-20 16:00:43
【问题描述】:

我们网站的自动完成变得非常缓慢,因此我们将实施缓存解决方案。

我一直在阅读有关 memcached 和 redis 的信息。它们都足够快(如果其中一个快 10 毫秒,这无关紧要)。我关心的主要区别是redis具有“持久性”。这听起来不错,但我不确定它如何应用于自动完成或是否有用?据我所知,如果没有持久性,这仅意味着我们必须在服务器重新启动时重建缓存。我不认为这是一个太大的问题(我在这里太天真了吗?哈哈)

我们已经安装了 memcached,所以在所有条件相同的情况下,我们可能会继续使用它,除非有令人信服的理由表明 redis 将成为执行搜索自动完成的卓越工具?

我们的数据集大约有 10 万个项目(可能会增长 2 或 3 倍)。

谢谢, 彼得

【问题讨论】:

  • 这个问题是怎么回事?我很想知道你最后做了什么。不要忘记更新。

标签: mysql autocomplete memcached redis


【解决方案1】:

antirez 的有趣博文,关于使用 Redis 创建自动完成系统。

http://antirez.com/post/autocomplete-with-redis.html

【讨论】:

    【解决方案2】:

    您的自动完成功能如何?首选的解决方案是拥有一个文本搜索服务,例如Solr,它可以快速返回建议。这是常用的方法,而且速度非常快。您永远不需要缓存层。

    也就是说,假设您现在无法部署 solr。如果您无法承受丢失数据的后果,Redis 就很有用。 Redis 将数据持久化到磁盘,因此即使在关闭数据之后。对我来说,如果缓存未命中,那么对于第一个人来说它会很慢。 Memcache 在这里是正确的层,因为如果数据丢失,您可以负担再次填充缓存。

    这是一个如何在 Solr 中进行自动建议的链接:What's the best way to implement AutoComplete in the server?

    【讨论】:

      猜你喜欢
      • 2019-07-18
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多