我一直在看Redis。看起来很有趣。但从实际角度来看,在什么情况下使用Redis而不是MySQL?
答案 0 :(得分:78)
忽略整个NoSQL与SQL争论,我认为最好的方法是将它们结合起来。换句话说,对于系统的某些部分(复杂的查找,事务)使用MySQL,对其他部分使用redis(性能,计数器等)。
根据我的经验,与可伸缩性(许多用户......)相关的性能问题最终会迫使您添加某种缓存以从MySQL服务器中删除负载,而redis / memcached非常擅长。
答案 1 :(得分:20)
我不是Redis专家,但从我收集的内容来看,两者都非常不同。 Redis:
我认为当你有一小部分不需要MySQL提供的关系结构并需要快速访问的数据时,你可能想要使用Redis。例如,这可以是动态Web界面中的会话数据,需要经常且快速地访问。
Redis还可以用作某些MySQL数据的缓存,这些数据将经常访问(即:在用户登录时加载)。
我认为你的问题是错误的,你应该问自己哪一个更适合某个应用程序,而不是哪个应用程序适合系统;)
答案 2 :(得分: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 MySQL具有大量的memcache缓存)。
答案 3 :(得分:6)
MySql -
1)结构化数据 2)ACID 3)繁重的交易和查询。
Redis -
1)非结构化数据 2)简单快速的查找。例如 - 会话的标记 3)用它来缓存层。
答案 4 :(得分:0)
根据官方网站,Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。实际上,Redis是高级键值存储。实际上,它是超快速的,具有惊人的高吞吐量,因为它每秒可以执行大约110000个SET,每秒执行大约81000个GET。它还支持一组非常丰富的数据类型来存储。实际上,Redis每次都将数据保留在内存中,但也将其保留在磁盘上。因此,这需要权衡:惊人的速度和数据集的大小限制(根据内存)。在本文中,为了有一些与MySQL相比的基准,我们将仅使用Redis作为缓存引擎。
答案 5 :(得分:0)
Redis,SQL(+ NoSQL)有其优点+缺点,并且经常并存:
(不同的SQL / NoSQL解决方案可能会有所不同。您应该阅读“ CAP定理”和“ ACID(计算机科学)”,以了解为什么一个系统无法同时为您提供全部功能)