我们希望在我们的网站上获得一些注册卖家的卖家联系。我们已经实现了memcached。因此,我们首先检查此对象是否存在缓存键,我们返回缓存对象,否则,我们从数据库中读取数据。
在数据库中,我们在master数据库上写入数据。但我们从奴隶数据库中读取。
以下是API序列调用,会产生问题:
GET API(SellerContact):它的第一个请求,因此找不到缓存键。现在,我们接近slave数据库,数据库中也没有卖家联系人记录,因此,我们在memcache中创建一个NULL对象,因为卖家联系不存在,此密钥的有效期为30天。
POST API(SellerContact):在主数据库中创建新的股票实体,使用上述具有NULL对象的GET请求创建的密钥无效。
GET API(SellerContact):如果在主数据同步到从属数据库之前执行此GET,则此GET将找不到任何memcache密钥,因为POST请求已使其无效,因此,它将转到数据库。由于它是读操作,它将接近Slave数据库,该数据库没有从master数据库获得新对象。因此,slave数据库将获取NULL对象,它将在memcache中保存30天。
这个问题的解决方案很少:
这个问题有更好的解决方案吗?