背景
在redis的命令接口中,没有专门针对list,set,hash等数据结构的key删除命令,只有指定到删除具体的对象的操作命令。
比如删除list列表的元素命令LREM,删除set集合中一个或多个元素命令SREM,删除hash中一个或多个元素HDEL。
而在redis的一些使用中还是可能遇到对这些集合类对象整体删除的场景如:
场景1:当用户的信息使用hash结构储存时,需要删除整个用户的信息
场景2:删除大V的粉丝列表
DEL
在redis4.0之前可以用del命令直接删除key,但是由于redis是单线程,如果对应value值很多,就会出现严重的阻塞问题。
官网给出了del命令的时间复杂度
Time complexity: O(N) where N is the number of keys that will be removed. When a key to remove holds a value other than a string, the individual complexity for this key is O(M) where M is the number of elements in the list, set, sorted set or hash. Removing a single key that holds a string value is O(1).
大概意思是:当有N个keys 要被移除时,时间复杂度是O(N);当要移除的key对应的value不是string,这是移除单个key的时间复杂度是O(M),这里的M是list,set,有序set或hash数据结构里面的元素。移除单个key,并且这个key对应的value是一个string类型,这时的时间复杂度是O(1).
<