redis RENAME 阻塞

redis RENAME 命令按文档说法是存在一个隐式 DEL 操作,通过查阅代码 db.c 可以得知至少一次 dbDelete,至多两次 dbDelete。

在命令上 redis 是提供了两种删除的操作,DELUNLINK,分别对应了 dbSyncDeletedbAsyncDelete

dbDelete 是对 dbAsyncDelete/dbSyncDelete 的封装,并且由配置 lazyfree_lazy_expire 决定,两个函数区别 dictGenericDelete 是否在执行线程 free K/V pair 和 dict key 内存。