【问题标题】:Why can Redis RENAME cause high latency?为什么 Redis RENAME 会导致高延迟?
【发布时间】:2015-03-13 02:41:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: redis


    【解决方案1】:

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

    【讨论】:

    • 那么新数据在访问该密钥时是否可以不间断地使用?
    • 是的,就是这样。
    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多