为什么Redis RENAME会导致高延迟?

时间:2015-03-12 15:13:16

标签: redis

来自RENAME command documentation(强调我的):

  

将键重命名为newkey。当源名称和目标名称相同或者密钥不存在时,它会返回错误。如果newkey已经存在,则会被覆盖,当发生这种情况时 RENAME执行隐式DEL操作,因此如果删除的键包含非常大的值,则可能导致高延迟,即使RENAME本身通常是常量操作

为什么Redis会复制数据然后DEL呢?在我看来,RENAME可能有点像移动文件:数据保持原样,但指向它的指针会更新,使其成为一个非常快速的操作。为什么Redis不这样工作?

1 个答案:

答案 0 :(得分:2)

再次阅读文档:) RENAME不会复制任何内容,但如果目标密钥存在则为DEL - 要删除的大目标==高延迟。