1. del;
删除指定的一批keys,如果删除中的某些key不存在,则直接忽略。
返回值
integer-reply: 被删除的keys的数量
2. UNLINK
该命令和DEL十分相似:删除指定的key(s),若key不存在则该key被跳过。但是,相比DEL会产生阻塞,该命令会在另一个线程中回收内存,因此它是非阻塞的。 这也是该命令名字的由来:仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。
返回值
integer-reply:unlink的keys的数量.
注意:unlink时会评估代价,如果代价不大 会立刻删除value,而key都是立刻就删除了的
https://blog.csdn.net/wojiuguowei/article/details/85096609
3. 设置TTL;
https://blog.csdn.net/weixin_33970449/article/details/92369718
总结:
不管是del还是unlink,key都是同步删除的。
使用unlink命令时,如果value分配的空间不大,使用异步删除反而会降低效率,所以redis会先评估一下free value的effort,根据effort的值来决定是否做异步删除。
使用unlink命令时,由于string类型的effort一直返回的是1,所以string类型不会做异步删除。
网友评论