redis数据库和mysql数据库能一起用吗

嘿嘿,你说的让我有共鸣!我在做项目的时候,也遇到了很多不足,我可以帮你解决。

我不记得具体是哪一年了,大概是1 5 、1 6 年前吧。
我们做了一个电商平台,流量很大。
一开始我只是以为MySQL可以存储数据,把所有东西都往里面塞。
结果?一旦流量过多,查询就会卡住。
用户查看产品详情,并查看后台数据库。
多么糟糕的用户体验。

后来,这家科技巨头决定将重点放在Redis上。
我们创建了一个单独的业务,将产品的基本信息、价格、目录直接放入Redis中。
当用户进来时,他首先看到的是Redis,并在几秒钟内返回到它,而无需访问MySQL。
想想看,如果一个产品每天被查询几十万次,这能为数据库节省多少压力?真的很快! Redis是内存操作,速度跟玩一样快。

但是!这也不是灵丹妙药。
记得有一次,在一次活动中,订单量增加了。
如果仅仅依靠Redis来减少库存,肯定是行不通的。
无论 Redis 有多快,它都不是关系数据库。
它无法处理交易。
最终我们还是要依靠MySQL,用事务来保证订单和库存的原子性。
只有生成订单后才能减少库存,并且过程中不能有任何差错。
如果单靠Redis来切,MySQL订单还没有生成,用户就取消订单,那不是超卖了吗?我踏入了这个陷阱,遭受了巨大的损失。

还有,如果Redis数据丢失了怎么办?默认情况下它存储在内存中。
所以后来我学会了定期拍摄RDB快照并将重要数据同步到磁盘。
或者使用AOF记录每一条指令,这样如果服务器崩溃了,可以恢复。
但是,根据具体情况,它也会对性能产生影响。
当时我们用Redis来处理热数据。
对于不容易改变或者需要维护的数据,我们还是使用MySQL。

另外,不要指望 Redis 能够完成 MySQL 的工作。
例如,如果您需要查看用户的多个订单,则还需要查看与订单关联的产品信息。
使用 Redis 来做到这一点是很糟糕的。
Redis 是一个简单的键值对,在创建复杂查询时这会变得多余。
我敢说,打我大腿,绝对不会。

安全也值得加分。
敏感信息、用户密码等仍然要存储在MySQL中,在MySQL中完成权限控制、加密等。
使用Redis要更加小心,并实现密码认证和网络隔离。
它速度很快,但也很容易成为目标。

总的来说,Redis和MySQL就像两兄弟,各有千秋有你的长处。
你让Tez Bhai做他擅长的事情,比如缓存、计数器、排行榜等等。
对于需要事务保证的关键数据,必须是静态MySQL。
当时在我们的项目中,我们发现这种关系和性能实际上得到了改善。
不懂的话,我每天都专注于数据库优化,努力了也没有效果。

你说的这些场景我基本上都经历过。
如果想多读少写,就用Redis做沙包,用MySQL做主力。
高并发缓存是标准用法。
在实时系统中,Redis发布和订阅也是一个强大的工具。
但是,如果你问我Redis持久化是如何工作的,我就得思考一下。
我当时主要靠RDB,没怎么玩AoF。
我并没有过多接触这个领域。

为什么MySQL单表不能超过2000万行?

你好,我来说一下我遇到的坑。
当单个表达到 2 000 万行时,MySQL 就会陷入困境。
确实让我头疼了很多年。

2 01 4 年,我在一家电商公司工作,数据库爆炸了。
该表有2 000万行,每次执行更新操作时,数据库都会冻结。
老板急坏了,连夜查资料,终于查出是索引问题。

我不明白你提到的理论。
反正我就是感觉MySQL单表不能超过2 000万行,但是一旦达到这个量,性能就急剧下降。
为什么?索引结构有问题。

我记得当我测试并添加索引时,数据库查询速度立即降低。
查资料发现MySQL采用的是B+Three索引,叶子节点存储数据,非叶子节点存储主键和页码。
想想看,如果数据量增加了,非叶子节点要处理多少麻烦?
我们来谈谈硬件。
那时候的服务器只有几百G的内存,硬盘还是机械盘。
你提到的SSD和TB级内存是我们当时无法想象的。
如果索引深度增加一层,读写性能就会减半。

还有SMO竞控,这简直就是一个坑。
我不太明白你所说的乐观锁和悲观锁是什么意思。
反正我感觉数据量大的时候,更新的时候就会全表被锁。
记得有一次我花了半个晚上更新了几万条数据,但是数据库还是卡住了。

后来我就想,是不是索引的组织方式有问题?我记得尝试将表更改为堆组织表,性能好多了。
我听说过你提到的华为云GaussDB。
他们的堆组织图非常好。

现在我也用B-LinkTree,效果也不错。
中间节点添加链接指针,节点添加高关键字段,提高读写性能。
不过这个东西也不是乱用的,一​​定要根据实际情况来使用。

一般情况下,当单表超过2 000万行时,MySQL就会冻结,主要是由于索引问题和硬件限制。
索引结构必须优化,硬件也必须跟上。
如果你的数据量确实增加了,建议改用华为云GaussDB这样的数据库,性能好很多。