我的解决方案是:
这个解决方案可以吗? 从事这项工作的最佳策略是什么?
您不需要破解任何东西;)
我不完全确定为什么您需要mysql上的数据。如果我知道,也许会有一个更合适的答案。无论如何,作为通用答案,您可以使用redis键空间通知
您可以在键上订阅命令HSET,HMSET,HDEL和DEL,因此,每次删除键或设置或删除哈希值时,您都会收到通知。
请注意,如果您错过任何通知,则将出现不一致的情况。因此,有时您可以仅使用SCAN命令浏览所有密钥,并检查mysql是否需要更新。
另一个策略可能是维护两个单独的结构。一个是带有值的哈希,另一个是所有值的ZSET,这些值按更新时间戳排序。使两种结构保持最新的最佳方法是编写两个或三个lua脚本(插入/更新和删除),这些脚本可对散列和zset进行原子操作。
然后,您可以定期在ZSET中查询时间戳比上次同步操作高的元素,获取所有已更新的密钥(它将包括已删除的密钥,除非您想专门为它们保留第二个ZSET),然后通过键检索所有元素并同步到mysql。
希望它对您有用!