当我们有 MySQL 临时表时,为什么我们有 Redis?

Teb*_*ebe 3 mysql redis

只要计算机有足够的内存(并且相应地设置了 MySQL),MySQL 临时表就会存储在内存中。可以为任何字段创建任何索引。

Redis 将数据存储在一次由一个键索引的内存中,据我所知,MySQL 也可以完成这项工作。

有没有什么东西可以让 Redis 更好地存储大量(100-200k 行)的易失性数据?我只能解释Redis的外观,不是每个项目里面都有mysql,可能其他一些数据库不支持临时表。

如果我的项目中已经有 MySql,那么忍受 Redis 有意义吗?

Mat*_*zer 7

Redis 就像直接使用索引一样。您和数据之间没有 ACID、SQL 解析器和许多其他东西。

它提供了一些基本的数据结构,它们经过专门优化以保存在内存中,并且它们还有特定的操作来读取和修改它们。

另一方面,Redis 并非设计用于查询数据 (但您可以使用SORTSCAN、 交集和其他操作实现非常强大和高性能的过滤器),而是存储数据,以便您稍后使用。例如,如果您想获得按 3 个不同标准排序的客户,您需要努力填充 3 个不同的排序集。其他数据结构有很多用例,但我最终会写一本书来回答......

此外,Redis 中最强大的功能之一是易于复制,并且自 3.0 版本以来,它支持开箱即用的数据分片。

关于为什么需要在 MySQL(以及其他具有它们的引擎)上使用 Redis 而不是临时表的原因取决于您。您需要研究您的案例并检查在像 Redis 这样的 NoSQL 存储中缓存或存储数据是否可以超越您的实际方法,并且它为您提供更优雅的数据架构。