2010-10-19 24 views
49

我一直在看Redis。它看起来很有趣。但从实际角度来看,在什么情况下使用Redis来优化MySQL?何时使用Redis代替MySQL的PHP​​应用程序?

+0

您是否阅读过:http://www.mysqlperformanceblog.com/2009/08/27/looking-at-redis/?我不明白所有(我是法国人),但看起来很有趣。 – MatTheCat 2010-10-19 09:04:10

+0

谢谢。是的,这很有趣。但我仍然不确定实际应用。 – 2010-10-19 09:18:02

+0

相关但没有与MySQL的具体情况:http://stackoverflow.com/questions/7888880/what-is-redis-and-what-do-i-use-it-for?rq=1 – 2014-07-12 08:21:40

回答

67

忽略整个NoSQL vs SQL的争论,我认为最好的方法是将它们结合起来。换句话说,将MySQL用于系统的某些部分(复杂查找,事务)以及其他部分(性能,计数器等)的redis。根据我的经验,与可伸缩性(很多用户...)相关的性能问题最终会迫使您添加某种缓存以从MySQL服务器中删除负载,并且predis/memcache等非常好。

15

我不是Redis的专家,但从我所搜集的内容来看,两者都非常不同。 Redis的:

  • 不是一个关系数据库(没有花哨的数据组织)
  • 把所有东西存在内存
  • 不太广泛的各种部署(更快,不占空间,大概不到在发生碰撞的情况下是安全的)主机管理(如果你不托管自己)

我想你可能要使用Redis的,因为当你有一个小的数据十岁上下的数量不需要关系结构MySQL提供,并要求快速访问。例如,这可能是需要经常和快速访问的动态Web界面中的会话数据。

Redis也可以用作一些MySQL数据的缓存,这些数据会经常被访问(即:当用户登录时加载它)。

我想你问的问题走错了路周围,你应该问问自己哪一个更适合的应用,而不是哪一个应用程序适合于系统;)

+1

谢谢 - 也许我问的是错误的方式,但如果我不明白什么时候使用Redis比MySQL更合适,我无法回答任何问题! – 2010-10-19 09:20:01

12

MySQL是一个关系型数据商店。如果配置(例如使用innodb表),则MySQL是可靠的数据存储库提供的ACID事务。

Redis是NoSQL数据库。这是更快(如果正确使用),因为它与交易速度的可靠性(是非常罕见的与FSYNC运行,因为这极大地伤害了性能)和交易(可以近似 - 慢 - 与SETNX)。

Redis has some very neat features例如集合,列表和排序列表。

These slides on Redis列举统计信息收集和会话管理为例。还有一个用redis编写的twitter clone作为例子,但这并不意味着twitter使用redis(twitter use具有沉重的memcache缓存的MySQL)。

4

MySQL的 -

1)结构化数据 2)ACID 3)重交易和查找。

的Redis -

1)非结构性数据 2)简单和快速查找。例如 - 会话令牌 3)将其用于缓存层。

相关问题