当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将Redis数据同步到MySQL的最佳策略是什么?》经验,为你挑选了1个好方法。

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

我不完全确定为什么你需要关于mysql的数据.如果我知道,也许会有更合适的答案.在任何情况下,作为通用答案,您可以使用redis键空间通知

您可以在密钥上订阅HSET,HMSET,HDEL和DEL命令,因此每次删除密钥或设置或删除哈希值时都会收到通知.

请注意,如果您错过任何通知,则会出现不一致.所以有一段时间你可以使用SCAN命令遍历所有密钥并检查mysql是否需要更新.

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

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

希望它对你有用!



1> Javier Ramir..:

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

我不完全确定为什么你需要关于mysql的数据.如果我知道,也许会有更合适的答案.在任何情况下,作为通用答案,您可以使用redis键空间通知

您可以在密钥上订阅HSET,HMSET,HDEL和DEL命令,因此每次删除密钥或设置或删除哈希值时都会收到通知.

请注意,如果您错过任何通知,则会出现不一致.所以有一段时间你可以使用SCAN命令遍历所有密钥并检查mysql是否需要更新.

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

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

希望它对你有用!

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有