【问题标题】:What are the main use cases for tools like memchached and Redis?memcached 和 Redis 等工具的主要用例是什么?
【发布时间】:2011-03-19 14:34:21
【问题描述】:

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

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

  • Feeds 或类似尾巴的逻辑(最后一个帖子出现在顶部)
    感谢 Redis 的列表管理功能:

      LPUSH post:<id>:comments <comment> //posts comment  
      LRANGE post:<id>:comments 0 9      // instantly gets last 10 comments 
    
  • 标签管理
    利用 Redis 的集合管理功能(和集合交互),很容易实现标签系统

  • 计分板关于高并发大容量服务
    Redis 可以在 O(log(N)) 中插入分数(即足够快),然后使用排序集检索 SQL 中需要的分数板

      SELECT * FROM table
      ORDER BY score LIMIT 0 10 
    

【问题讨论】:

  • SELECT * FROM table ORDER BY score LIMIT 0 10 如果设置了索引,也不是那么糟糕。只是说'

标签: performance memcached redis


【解决方案1】:

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

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

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

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

几个例子:

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

【讨论】:

  • 添加一件事,你可以像使用 MySQL 一样使用 Redis。缓存是 Redis 广泛使用的用途,但我用它来运行博客和社交网络。 MySQL 能做的几乎所有事情,Redis 都能(更快)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 2011-02-13
    • 2010-11-27
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多