软件开发RedisMySQL

MySQL写到Redis读的过程是实时还是异步?

请问各位大拿,实际生产环境中,MySQL写到Redis读的过程是实时还是异步?即Redis是否需要立刻支持读到前端写的数据?如果是异步的,时延一般是多少,比如XX秒还是XX分钟?

参与25

8同行回答

匿名用户匿名用户
实时的。前端能实时读到写入redis的数据。显示全部

实时的。前端能实时读到写入redis的数据。

收起
互联网服务 · 2024-03-04
浏览447
匿名用户匿名用户
在实际生产环境中,将MySQL的数据同步到Redis的过程可以是实时的也可以是异步的,这取决于具体的业务需求和技术实现。这里的“实时”和“异步”主要指数据从MySQL写入到Redis后用户能够从Redis中读取这些数据的延迟。实时同步实时同步通常意味着数据在写入MySQL后立即被复制...显示全部

在实际生产环境中,将MySQL的数据同步到Redis的过程可以是实时的也可以是异步的,这取决于具体的业务需求和技术实现。这里的“实时”和“异步”主要指数据从MySQL写入到Redis后用户能够从Redis中读取这些数据的延迟。

实时同步

  • 实时同步通常意味着数据在写入MySQL后立即被复制到Redis,以便几乎无延迟地供前端应用读取。这种同步通常通过以下几种技术实现:
  • 数据库触发器与应用逻辑:在MySQL中使用触发器,在数据变更时触发一个外部的应用逻辑,这个逻辑负责将变更的数据即时写入到Redis。
  • 双写机制:应用代码在写入MySQL的同时,也将数据写入Redis。这种方法依赖于应用层的逻辑来保证数据的一致性和同步。
  • 消息队列:使用消息队列如Kafka或RabbitMQ作为中间件,当数据写入MySQL后,同时发送一条消息到队列,再由一个后端服务监听这些消息并更新Redis。

异步同步

  • 异步同步则允许在MySQL写入和Redis更新之间有一定的延迟。这种方式适用于对读取实时性要求不高的场景。异步同步的常见实现方式包括:
  • 定时任务:设置一个定时运行的脚本或服务,定期从MySQL抓取更新,然后更新Redis。这种方式下,延迟可以从几秒到几分钟不等。
  • 延迟队列:使用延迟队列来处理数据同步,可以灵活控制数据从MySQL到Redis的延迟时间。
收起
事业单位 · 3小时前
浏览9
罗文江罗文江课题专家组云计算架构师某银行
部署架构上,采用异步模式:mysql---->canal--->kafka--->redis。redis:定位是cache缓存,因此实时双写没有必要,且对业务系统写操作的侵入性太大。显示全部

部署架构上,采用异步模式:mysql---->canal--->kafka--->redis。

redis:定位是cache缓存,因此实时双写没有必要,且对业务系统写操作的侵入性太大。

收起
银行 · 2024-03-24
浏览164
Luga LeeLuga Lee系统架构师None
这个取决于具体的应用场景和需求,可以是实时也可以是异步。如果对数据一致性要求较高,例如金融交易系统、电商订单系统等,需要选择实时同步;如果对数据一致性要求不高,例如博客、论坛等,可以选择异步同步。延迟取决于具体的实现方式和应用场景,使用“消息队列”的异步的话,延迟一...显示全部

这个取决于具体的应用场景和需求,可以是实时也可以是异步。

如果对数据一致性要求较高,例如金融交易系统、电商订单系统等,需要选择实时同步;
如果对数据一致性要求不高,例如博客、论坛等,可以选择异步同步。

延迟取决于具体的实现方式和应用场景,使用“消息队列”的异步的话,延迟一般在几毫秒到几秒之间;而使用“定时任务”的异步,延迟一般在几秒到几分钟之间。

收起
互联网服务 · 2024-03-11
浏览271
feiyun20feiyun20系统运维工程师某城商行
感觉异步更高效点。实时对性能要求很高。显示全部

感觉异步更高效点。实时对性能要求很高。

收起
系统集成 · 2024-03-07
浏览314
wangzk0206wangzk0206数据库管理员scrcu
一般都是异步的吧。一般都是要么双写,读的时候先读redis,读不到再去mysql库读吧。如果业务场景很特殊的话,可能具体问题要具体分析了。显示全部

一般都是异步的吧。一般都是要么双写,读的时候先读redis,读不到再去mysql库读吧。如果业务场景很特殊的话,可能具体问题要具体分析了。

收起
银行 · 2024-03-07
浏览330
  • 匿名用户
    100W条Sysbench对应2100TPS,跟之前和老师们对过的典型压力范围差不多,不算太大压力 100W条写入的时间是一分钟左右,但写到Redis要花一小时,主要是这个瓶颈问题比较明显
    2024-03-13
  • wangzk0206  wangzk0206回复 匿名用户
    异步写要看你写redis逻辑吧,写mysql 是一条一条insert?那什么程序去写的redis哪?
    2024-03-15
  • 匿名用户
    是通过canal中间件由mysql同步到redis的方案。是否这个方案不是最理想的?
    2024-03-20
  • wangzk0206  wangzk0206回复 匿名用户
    首先去研究下canal是否有什么参数设置,排查是抽取mysql慢,还是写入redis慢。一般这个是有参数设置的。如果是redis写入慢,看是否尝试采用集群版本会不会好些。因为这种瞬时批量同步的场景,我们没有用过。
    2024-03-22
顾黄亮顾黄亮课题专家组技术总监畅销书作者
除了双写以外,其他的方式都是异步,看数据结构和数据量,通常耗时都是MS,遇到慢日志,会到S级显示全部

除了双写以外,其他的方式都是异步,看数据结构和数据量,通常耗时都是MS,遇到慢日志,会到S级

收起
银行 · 2024-03-06
浏览347
anikikonganikikong课题专家组数据库运维工程师中国民生银行
一般是异步的,通过定时同步更新到redis里面,也有通过工具实时同步的,但也算是异步的。如需真的实时同步,需要应用对数据做双写处理显示全部

一般是异步的,通过定时同步更新到redis里面,也有通过工具实时同步的,但也算是异步的。如需真的实时同步,需要应用对数据做双写处理

收起
银行 · 2024-03-05
浏览385
  • 匿名用户
    请问异步时延一般是多少呢?比如是10分钟?半小时?谢谢您
    2024-03-05
  • anikikong  anikikong回复 匿名用户
    这个得看应用。大部分应用都是配置数据缓存,基本不会修改。一事一议吧
    2024-03-05

ChatGPT 回答

在实际生产环境中,MySQL写到Redis读的过程一般是异步的。这是因为MySQL和Redis是两个不同的系统,它们之间的数据传输需要经过网络传输等多个环节,因此无法做到实时同步。

在异步的情况下,Redis读到前端写的数据的时延取决于多个因素,比如Redis和MySQL之间的网络延迟、Redis服务器的负载情况、Redis的持久化策略等等。一般来说,时延可能会在几毫秒到几秒之间,但具体的数值还需要根据实际情况进行测试和评估。如果需要更快的读取速度,可以考虑使用Redis的主从复制或者集群模式,以提高读取性能和可用性。

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2024-03-04
  • 关注会员:9 人
  • 问题浏览:2038
  • 最近回答:3小时前
  • X社区推广