当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 我应该相信Redis的数据完整性吗?

来源:互联网 收集:自由互联 发布时间:2021-06-22
在我目前的项目中,我将PostgreSQL作为我的主数据库,Redis作为一种奴隶,例如,当某个用户将另一个用户添加为朋友时,首先将关系存储在PostgreSQL中,然后更新Redis中的朋友列表.当请求某个用户
在我目前的项目中,我将PostgreSQL作为我的主数据库,Redis作为一种奴隶,例如,当某个用户将另一个用户添加为朋友时,首先将关系存储在PostgreSQL中,然后更新Redis中的朋友列表.当请求某个用户的好友列表时,它将被拉出Redis而不是PostgreSQL.

问题是:当我更新Redis中的好友列表时,我应该从PostgreSQL中获取一份新的副本,并用新的列表替换Redis中的旧列表,还是应该保留旧列表,只需将用户ID SADD到列表中?后者当然最适合性能,但直观地说前者在保持数据完整性方面做得更好?如果使用像Celery这样的东西,第二种方法是否值得冒险?

这与Redis无关.当您写入两个数据库时,即使两个数据库都保证数据完整性,也会出现很多问题.

为了便于讨论,在您的问题中将Redis替换为MySQL,并问自己 – 数据完整性会受到损害吗?

您可能已经写过Postgres,然后您的进程可能会死而无需写入MySQL.或者可能是网络中断.或者MySQL可能已关闭.在所有这些情况下,Postgres和MySQL将开始有所不同.

无论是替换整个记录还是简单地添加一行都无关紧要.两者都可能导致数据损坏.

如果您关注数据完整性,请将数据保存在单个权威系统中.否则,你需要一个two phase commit protocol

网友评论