memcached和Redis等工具的主要用例是什么?

时间:2011-03-19 14:34:21

标签: performance memcached redis

我的主要兴趣在于可以使用这些工具来调整现有的基于事务RDBS的应用程序的用例。
是否有涉及这些工具的常见设计模式的良好来源?

经过一些研究后,我发现以下示例用例用于 Redis ,在SQL数据存储上实现更加困难(肯定更慢):

  • 供稿或类似尾巴的逻辑(上一篇文章显示在顶部)
    感谢Redis的列表管理功能:

      LPUSH post:<id>:comments <comment> //posts comment  
      LRANGE post:<id>:comments 0 9      // instantly gets last 10 comments 
    
  • 代码管理
    利用Redis的集管理功能(并设置intersaction),可以轻松实现标签系统

  • 在高并发大批量服务上获得分数 Redis可以在 O(log(N))中插入分数(即足够快),然后使用有序集来检索SQL中需要的分数板

      SELECT * FROM table
      ORDER BY score LIMIT 0 10 
    

2 个答案:

答案 0 :(得分:1)

Redis和Memcached是内存数据存储。主要区别在于Memcached不是持久的(当服务器重新启动时内容被刷新)而Redis是。此外,Redis还支持多种数据结构,例如Sets。

内存数据存储的最常见用例是缓存。 Memcached几年来一直是最受欢迎的选择。 Redis可以使用属性配置解决几乎所有Memcached任务。

因为Memcached不是持久的,所以不能信任它来存储持久数据。这就是为什么它的最佳用法是缓存存储。

毕竟,Redis是一个数据库。这意味着缓存只是其应用程序之一。一般来说,只要你需要一个非常快速的数据存储,Redis是一个非常好的选择。用户案例包括日志记录,队列系统,索引。

一些例子:

  • Resque是Redis支持的Ruby库,用于创建后台作业
  • Hoptoad更改了基础结构,以便使用Redis as fast-storage存储用户数据。然后将数据后处理到MySQL。

答案 1 :(得分:0)

我想说这些“在内存”数据库(就RDBMS性能调整而言)的主要用途是用于缓存目的,即使这个网站是using Redis for caching。您可以找到有关StackOverflow如何使用它的一些信息here