gpt4 book ai didi

mysql - 将 Redis 数据同步到 MySQL 的最佳策略是什么?

转载 作者:IT老高 更新时间:2023-10-28 23:49:57 24 4
gpt4 key购买 nike

  1. 用例是使用Redis作为MySQL的本地缓存
  2. MySQL 中的数据格式是:单个主键和多个其他字段。不会有db的跨表查询
  3. Redis key是MySQL中的主键,value是包含MySQL中其他字段的hash
  4. 断电时,不到一分钟的数据丢失是可以接受的。

我的解决方案是:

  1. Redis写入AOF文件,一些进程会监控这个文件并将更新的数据同步到MySQL
  2. Hack Redis 在多个文件中写入 AOF,就像 MySQL binlog
  3. 数据接口(interface)只会通过Redis读写

这个解决方案可以吗?
完成这项工作的最佳策略是什么?

最佳答案

你不需要破解任何东西;)

我不完全确定你为什么需要 mysql 上的数据。如果我知道,也许会有更合适的答案。无论如何,作为通用答案,您可以使用 redis keyspace notifications

您可以在您的 key 上订阅 HSET、HMSET、HDEL 和 DEL 命令,这样每次删除 key 或设置或删除哈希值时您都会收到通知。

请注意,如果您错过任何通知,就会出现不一致。因此,偶尔您可以使用 SCAN 命令检查所有 key 并检查 mysql 是否需要更新。

另一种策略可能是维护两个独立的结构。一个是带有值的散列,另一个是按更新时间戳排序的所有值的 ZSET。使这两种结构保持最新的最佳方法是编写两个或三个 lua 脚本(插入/更新和删除),以原子方式对哈希和 zset 进行操作。

然后您可以定期查询 ZSET 以查找时间戳高于上次同步操作的元素,获取所有已更新的 key (它将包括已删除的 key ,除非您想专门为这些元素保留第二个 ZSET)然后只需按键检索所有元素并同步到 mysql。

希望它对你有用!

关于mysql - 将 Redis 数据同步到 MySQL 的最佳策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23080557/

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