memcached - 为什么memcached的set操作不是幂等的?

标签 memcached idempotent

在 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/

相关文章:

memcached - 我们如何在不同端口的同一服务器中创建两个 memcached 服务器实例?

python - memcache.get 返回错误的对象(Celery、Django)

php - 从 LEMP 服务器上的源代码安装 Memcached 1.4.2.0 并使其与 PHP5-Memcached 通信

java - 如果我使用 32 位原语和我的函数幂等,为什么我可以跳过 DCL 的任何同步?

rest - 在 REST API 中使 PUT 创建请求幂等

caching - 我的缓存守护进程应该驻留在哪里?

memcached - 如何序列化 Jackson 的 JsonNode 对象?

java - 在我们可以调用它之前,一个函数到底必须遵守什么规则 "idempotent"?

apache-kafka - kafka中幂等生产者有什么用?

debian - 如何使用 Ansible 获取已安装的 apt 包?