在 Facebook 论文“Scaling Memcache at Facebook”的第 2 页上,他们说“对于写入请求,网络服务器向数据库发出 SQL 语句,然后向 memcache 发送删除请求,从而使任何陈旧数据无效。我们选择删除缓存数据而不是更新它,因为删除是幂等的。”
为什么update/set不是幂等操作?
论文可以在这里找到:https://www.usenix.org/system/files/conference/nsdi13/nsdi13-final170_update.pdf
最佳答案
如果您连续调用两次删除,则第二次删除不会产生任何效果。此处更新/设置的行为会有所不同:虽然它不会更改与键关联的值,但它将更新键的最后访问时间,从而更改键被逐出的逻辑。从这个意义上说,删除键操作是幂等的,而更新键值则不是。
例如在论文中,如果没有人尝试读取 key ,他们不想将 key 保留在缓存中(即使数据库中对该 key 进行了大量写入)。
关于memcached - 为什么memcached的set操作不是幂等的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61607382/