2011-03-19 72 views
1

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

一些reasearch后,我发现了以下样品用例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 
    
+0

SELECT * FROM表 ORDER BY得分LIMIT 0 10 是不是所有的坏,如果索引设置。只要说' – BMiner 2011-03-25 20:06:08

回答

1

Redis和Memcached是内存中的数据存储。主要区别在于,在Redis时,Memcached不是持久性的(内容在服务器重新启动时刷新)。此外,Redis还提供了对多个数据结构(如集合)的支持。

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

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

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

举几个例子:

  • Resque是Redis的支持Ruby库创建后台作业
  • 黾才能使用Redis as fast-storage存储用户数据变化的基础设施。数据然后被后处理为MySQL。
+0

要增加一件事,你可以像MySQL一样使用Redis。缓存是Redis广泛使用的,但我使用它来运行博客和社交网络。几乎MySQL可以做的任何事情,Redis可以(更快) – Colum 2011-03-20 01:02:53

0

我会说这些“记忆”数据库是主要用途(在RDBMS性能优化方面)是缓存的目的,即使这个网站是using Redis for caching。你可以找到一些关于StackOverflow如何使用它的信息。here