82

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

4

6 回答 6

99

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

以我的经验,与可伸缩性相关的性能问题(很多用户......)最终会迫使你添加某种缓存来消除 MySQL 服务器的负载,而 redis/memcached 非常擅长这一点。

于 2010-10-19T09:39:00.880 回答
22

我不是 Redis 专家,但从我收集到的信息来看,两者都有很大的不同。雷迪斯:

  • 不是关系数据库(没有花哨的数据组织)
  • 将所有内容存储在内存中(更快,更少空间,在发生崩溃时可能不太安全)
  • 在各种虚拟主机上的部署较少(如果您不是自己托管)

我认为当您拥有少量不需要 MySQL 提供的关系结构并且需要快速访问的数据时,您可能希望使用 Redis。例如,这可能是需要经常快速访问的动态 Web 界面中的会话数据。

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

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

于 2010-10-19T09:16:10.710 回答
16

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

Redis 是一个 NoSQL 数据库。它更快(如果使用正确),因为它在速度与可靠性(很少使用 fsync 运行,因为这会极大地损害性能)和事务(可以用SETNX缓慢地近似)。

Redis 有一些非常简洁的特性,例如集合、列表和排序列表。

这些关于 Redis 的幻灯片列出了统计信息收集和会话管理作为示例。还有一个用redis编写的twitter克隆作为例子,但这并不意味着twitter使用redis(twitter使用带有大量memcache缓存的MySQL)。

于 2010-10-19T09:24:08.193 回答
6

mysql -

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

雷迪斯 -

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

于 2015-12-08T20:47:15.300 回答
2

Redis、SQL(+NoSQL)各有优缺点,而且经常并存:

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

(不同的 SQL/NoSQL 解决方案可能会有所不同。您应该阅读CAP 定理ACID,了解为什么一个系统不能同时为您提供所有信息)

于 2019-04-21T20:40:14.287 回答
-1

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

在这里阅读:Redis vs MySQL 基准测试

于 2019-04-13T06:36:36.333 回答