PHP应用程序何时使用Redis而不是MySQL?

PHP应用程序何时使用Redis而不是MySQL?,php,mysql,redis,Php,Mysql,Redis,我一直在看Redis。看起来很有趣。但是从实际的角度来看,在什么情况下使用Redis而不是MySQL会更好呢?我不是Redis专家,但从我收集的数据来看,两者都有很大的不同。Redis: 不是关系数据库(没有奇特的数据组织) 将所有内容存储在内存中(更快、更少的空间,在崩溃时可能更不安全) 不太广泛地部署在各种Web主机上(如果您不是自己托管) 我认为当你有少量的数据,不需要MySQL提供的关系结构,并且需要快速访问时,你可能需要使用Redis。例如,这可能是需要经常快速访问的动态web界面

我一直在看Redis。看起来很有趣。但是从实际的角度来看,在什么情况下使用Redis而不是MySQL会更好呢?

我不是Redis专家,但从我收集的数据来看,两者都有很大的不同。Redis:

  • 不是关系数据库(没有奇特的数据组织)
  • 将所有内容存储在内存中(更快、更少的空间,在崩溃时可能更不安全)
  • 不太广泛地部署在各种Web主机上(如果您不是自己托管)
我认为当你有少量的数据,不需要MySQL提供的关系结构,并且需要快速访问时,你可能需要使用Redis。例如,这可能是需要经常快速访问的动态web界面中的会话数据

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


我认为你问的问题是错误的,你应该问问自己哪一个更适合一个应用程序,而不是哪一个应用程序更适合一个系统;)

MySQL是一种关系数据存储。如果配置(例如使用innodb表),MySQL是提供事务的可靠数据存储

Redis是一个NoSQL数据库。它更快(如果使用正确的话),因为它在速度与可靠性(很少使用fsync运行,因为这会严重影响性能)和事务(可以近似-缓慢-使用)之间进行权衡

例如集合、列表和排序列表


以统计数据收集和会话管理为例。还有一个以redis为例编写的twitter克隆,但这并不意味着twitter使用redis(带有大量memcache缓存的MySQL)。

忽略整个NoSQL与SQL的争论,我认为最好的方法是将它们结合起来。换句话说,对系统的某些部分(复杂的查找、事务)使用MySQL,对其他部分(性能、计数器等)使用redis

根据我的经验,与可伸缩性相关的性能问题(大量用户…)最终会迫使您添加某种缓存以消除MySQL服务器的负载,而redis/memcached在这方面非常出色。

MySQL-

1) 结构化数据 2) 酸的 3) 繁重的事务和查找

雷迪斯-

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

根据官方网站,Redis是一个开源(BSD许可)内存数据结构存储,用作数据库、缓存和消息代理。实际上,Redis是一个高级键值存储。它确实是超高速的,具有惊人的高吞吐量,因为它每秒可以执行大约110000台,每秒大约81000台。它还支持存储一组非常丰富的数据类型。事实上,Redis每次都将数据保存在内存中,但也将数据持久保存在磁盘数据库中。所以,它带来了一个折衷:惊人的速度和数据集的大小限制(根据内存)。在本文中,为了与MySQL进行比较,我们将使用Redis作为缓存引擎

请阅读此处:

Redis、SQL(+NoSQL)各有优缺点,通常是并行的:

  • Redis-局部变量移动到单独的应用程序
    • 易于从局部变量/原型移动
    • 持久存储
    • 多个用户/应用程序都可以看到相同的数据
    • 可伸缩性
    • 故障转移
    • (-)很难对数据进行更高级的查询/提问
  • NoSQL
    • 将原始数据转储到“数据库”
    • 所有/大部分Redis功能
    • (-)与SQL相比,更难执行高级查询
  • SQL
    • 数据之间的高级查询
    • 所有/大部分Redis功能
    • (-)需要将数据放入“模式”(思考表/Excel)
    • (-)比Redis/NoSQL更难获取简单的值

(不同的SQL/NoSQL解决方案可能会有所不同。您应该仔细阅读,以及为什么一个系统不能同时为您提供所有解决方案)

您读过吗:?我不全懂(我是法国人),但似乎很有趣。谢谢。是的,这很有趣。虽然MySQL不是Redis的替代品,但我还是不确定它的实际应用。你应该记住MySQL支持散列索引(默认是较慢但可排序的btrees)。然后,您可以通过增加my.ini值
key\u buffer\u size
将所有密钥存储在内存中。这可能不会取代redis,但请记住,通过这些东西,您可以更接近NoSQL的性能。你可以在把RADIS添加到你的堆栈之前考虑这些。谢谢-也许我问问题的方式不对,但是如果我不理解何时使用ReISIS比MySQL更合适,我不能回答任何问题!