Redis之list

Redis 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
list可以定义一些规则,使它作为栈、队列或双端队列。

案例

  • LPUSH&RPUSH
127.0.0.1:6379> LPUSH list noe              #将一个值或多个值插入列表头部,最左边
(integer) 1
127.0.0.1:6379> LPUSH list two
(integer) 2
127.0.0.1:6379> LPUSH list tree
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1            #获取list中的值
1) "tree"
2) "two"
3) "noe"
127.0.0.1:6379> RPUSH list right            #将一个值或多个值插入列表尾部,最右边
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1              
1) "tree"
2) "two"
3) "noe"
4) "right"
127.0.0.1:6379> LRANGE list 0 1             #获取list区间中的值
1) "tree"
2) "two"
  • LPOP&RPOP
127.0.0.1:6379> LRANGE list 0 -1              
1) "tree"
2) "two"
3) "noe"
4) "right"

127.0.0.1:6379> LPOP list                   #移除列表中的第一个元素,最左边的
"tree"
127.0.0.1:6379> RPOP list                   #移除列表中的最后一个元素,最右边的
"right"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
  • LINDEX
127.0.0.1:6379> LINDEX list 1               #通过下标获取list中的某一个值
"noe"
127.0.0.1:6379> LINDEX list 0
"two"
  • LLEN
127.0.0.1:6379> LLEN list                   #获取list的长度
(integer) 2
  • LREM

count > 0: 从头到尾删除值为 value 的元素。
count < 0: 从尾到头删除值为 value 的元素。
count = 0: 移除所有值为 value 的元素。
比如, LREM list -2 “hello” 会从列表key中删除最后两个出现的 “hello”。
需要注意的是,不存在key会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。

127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
3) "right"
4) "hello"
5) "hello"

127.0.0.1:6379> LREM list 1 right          #移除list中指定的值right(从左到右)  
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
3) "hello"
4) "hello"

127.0.0.1:6379> LREM list 2 hello
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "noe"
  • LTRIM
127.0.0.1:6379> rpush mylist hello
(integer) 1
127.0.0.1:6379> rpush mylist hello1
(integer) 2
127.0.0.1:6379> rpush mylist hello2
(integer) 3
127.0.0.1:6379> rpush mylist hello3
(integer) 4
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> LTRIM mylist 1 2             #通过下表截取指定长度,这个list只剩下截取的元素(从第一个截取两个元素)
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
127.0.0.1:6379>
  • rpoplpush

移除列表中的最后一个元素并将它移动到新的列表中。

127.0.0.1:6379> rpush mylist hello
(integer) 1
127.0.0.1:6379> rpush mylist hello1
(integer) 2
127.0.0.1:6379> rpush mylist hello2
(integer) 3
127.0.0.1:6379> rpoplpush mylist myotherlist
"hello2"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "hello1"
127.0.0.1:6379> LRANGE myotherlist 0 -1
1) "hello2"
  • lset

将列表中指定的值替换成新的值,更新操作

127.0.0.1:6379> EXISTS list
(integer) 0
127.0.0.1:6379> lset list 0 item                #如果列表不存在,报错
(error) ERR no such key
127.0.0.1:6379> lpush list value1
(integer) 1
127.0.0.1:6379> lrange list 0 0
1) "value1"
127.0.0.1:6379> lset list 0 item               #如果列表存在,更新当前下表的值为新的值
OK
127.0.0.1:6379> lrange list 0 0
1) "item"
127.0.0.1:6379> lset list 1 other
(error) ERR index out of range
  • linsert

将某一个具体的值,插入到列表中某个元素的前边或后边

127.0.0.1:6379> RPUSH mylist hello
(integer) 1
127.0.0.1:6379> RPUSH mylist world
(integer) 2
127.0.0.1:6379> LINSERT mylist before world orther
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "orther"
3) "world"
127.0.0.1:6379> LINSERT mylist after world new
(integer) 4
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "orther"
3) "world"
4) "new"

参考

https://redis.com.cn/commands/lrem.html

posted @ 2024-06-03 22:17  *一炁化三清*  阅读(2)  评论(0编辑  收藏  举报