删除Redis列表中的所有条目

Pau*_*rth 72 list redis

假设您在Redis中有一个LIST数据类型.你如何删除所有条目?我已经尝试过了:

LTRIM key 0 0
LTRIM key -1 0
Run Code Online (Sandbox Code Playgroud)

这两个都留下了第一个元素.这将留下所有元素:

LTRIM key 0 -1
Run Code Online (Sandbox Code Playgroud)

我没有看到完全清空列表的单独命令.

Anu*_*rag 130

删除密钥,这将清除所有项目.根本没有列表类似于没有任何项目.当您尝试访问不存在的密钥时,Redis不会抛出任何异常.

DEL key
Run Code Online (Sandbox Code Playgroud)

这是一些控制台日志.

redis> KEYS *
(empty list or set)
redis> LPUSH names John
(integer) 1
redis> LPUSH names Mary
(integer) 2
redis> LPUSH names Alice
(integer) 3
redis> LLEN names
(integer) 3
redis> LRANGE names 0 2
1) "Alice"
2) "Mary"
3) "John"
redis> DEL names
(integer) 1
redis> LLEN names
(integer) 0
redis> LRANGE names 0 2
(empty list or set)

  • 这种方法很危险,因为它还会**删除密钥的 ttl** (3认同)

ahm*_*mdy 16

您可以删除所有值列表 只有名单有多于一个值

LTRIM key -1 0
Run Code Online (Sandbox Code Playgroud)

例:

redis 127.0.0.1:6379> RPUSH mylist four 1 3 1
(integer) 4
redis 127.0.0.1:6379> KEYS *
1) "newKey"
2) "firstHash"
3) "secondList"
4) "test4"
5) "firstList"
6) "mylist"
redis 127.0.0.1:6379> LTRIM mylist -1 0
OK
redis 127.0.0.1:6379> LRANGE mylist 0 -1
(empty list or set)
redis 127.0.0.1:6379> KEYS *
1) "newKey"
2) "firstHash"
3) "secondList"
4) "test4"
5) "firstList"
Run Code Online (Sandbox Code Playgroud)

如果List只有一个值,则必须使用

DEL key 
Run Code Online (Sandbox Code Playgroud)


Moh*_*jib 6

只需使用LTRIM即可。...Aaa这里的神奇之处在于使用start 大于 end

LTRIM key 99 0
Run Code Online (Sandbox Code Playgroud)

还有……繁荣!这是整个元素列表。就在你眼前*噗*!!没有残留物,也绝对不会提出任何问题。

注意:这将导致密钥被“删除”(如删除),如此处所述

...如果 start 大于列表的末尾,或者 start > end,结果将是一个空列表(这会导致 key 被删除)。