来自RENAME
command documentation(强调我的):
将键重命名为newkey。当源名称和目标名称相同或者密钥不存在时,它会返回错误。如果newkey已经存在,则会被覆盖,当发生这种情况时 RENAME执行隐式DEL操作,因此如果删除的键包含非常大的值,则可能导致高延迟,即使RENAME本身通常是常量操作
为什么Redis会复制数据然后DEL
呢?在我看来,RENAME
可能有点像移动文件:数据保持原样,但指向它的指针会更新,使其成为一个非常快速的操作。为什么Redis不这样工作?
答案 0 :(得分:2)
再次阅读文档:) RENAME
不会复制任何内容,但如果目标密钥存在则为DEL
- 要删除的大目标==高延迟。