gpt4 book ai didi

mysql - 更快的redis数据迁移到MySQL的方法

转载 作者:IT王子 更新时间:2023-10-29 05:57:41 25 4
gpt4 key购买 nike

我们有大型购物和产品交易系统。我们在使用 MySQL 时遇到了很多问题,因此经过几次研发后,我们计划使用 Redis,并开始将 Redis 集成到我们的系统中。继之前直接访问数据库之后,现在我们已经移动了 Redis 系统

  1. 用户购物车详情
  2. 关联公司点击跟踪记录
  3. 我们有产品交易用户数据。
  4. 其他网站统计信息。

我不仅将数据存储在 Redis 系统中,我还编写了 crons,它按时间间隔将 Redis 数据移动到 MySQL 数据中。这是我面临的主要问题。以下几点我正在寻找解决方案

  1. 他们还有其他方法可以将大数据从 Redis 转储到 MySQL 吗?
  2. Redis 无法将我们的数据存储在文件中,因此是否可以将该数据直接存储到 MySQL 数据库?
  3. Redis 是否有任何触发器系统可以避免队列系统之类的 crons?

最佳答案

他们还有其他方法可以将大数据从 Redis 转储到 MySQL 吗?

Redis 有可能(使用 bgsave)以非阻塞和一致的方式生成数据转储。

https://github.com/sripathikrishnan/redis-rdb-tools

您可以使用 Sripathi Krishnan 的知名软件包在 Python 中解析 redis 转储文件 (RDB),并离线填充 MySQL 实例。或者,您可以将 Redis 转储转换为 JSON 格式,并使用您想要填充 MySQL 的任何语言编写脚本。

只有当你想将 Redis 实例的完整数据复制到 MySQL 中时,这个解决方案才有用。

Redis 是否有任何触发系统可以用来避免像队列系统这样的 crons?

Redis 没有触发器的概念,但是每次必须将某些内容复制到 MySQL 时,没有什么可以阻止您在 Redis 队列中发布事件。例如,而不是:

# Add an item to a user shopping cart
RPUSH user:<id>:cart <item>

你可以执行:

# Add an item to a user shopping cart
MULTI
RPUSH user:<id>:cart <item>
RPUSH cart_to_mysql <id>:<item>
EXEC

MULTI/EXEC block 使其具有原子性和一致性。然后你只需要写一个小守护进程等待 cart_to_mysql 队列的项目(使用 BLPOP 命令)。对于每个出列的项目,守护进程必须从 Redis 获取相关数据,并填充 MySQL 实例。

Redis 无法将我们的数据存储在文件中,因此是否可以将该数据直接存储到 MySQL 数据库?

我不确定我是否理解这里的问题。但是,如果您使用上述解决方案,Redis 更新和 MySQL 更新之间的延迟将非常有限。因此,如果 Redis 失败,您只会丢失最后的操作(与基于 cron 作业的解决方案相反)。当然,在数据传播中不可能有 100% 的一致性。

关于mysql - 更快的redis数据迁移到MySQL的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com