Redis数据类型-列表List

本文详细介绍了Redis中的List数据结构,包括lpush、rpush、lrange、lpop、rpop、lindex、llen、lrem、ltrim、rpoplpush和lset等操作,并通过实例演示了其用法。Redis List适用于实现消息队列、存储有序数据等场景,具备高效率的头尾操作。
摘要由CSDN通过智能技术生成

列表List(单值多Value)

#=====================================

# lpush :将一个或多个值插入到列表头部(左)

# rpush :将一个或多个值插入到列表尾部(右)

# lrange :返回列表中指定区间内的元素,区间以偏移量 start和end指定

# 其中0 表示类别的第一个元素   1表示列表的第二个元素 以此类推

# 你也可以使用负数下标 以-1 表示列表的最后一个元素 -2 表示列表的倒数第二个元素 以此类推

#=====================================

127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lrange list 0 1
1) "three"
2) "two"
127.0.0.1:6379> 

 

#=====================================

# lpop :命令用于移除并返回列表的第一个元素。当类别key不存在时 返回nil

# rpop:移除列表的最后一个元素,返回值为移除的元素

#=====================================

127.0.0.1:6379> rpush list right
(integer) 3
127.0.0.1:6379> lpop list
"two"
127.0.0.1:6379> rpop list
"right"

127.0.0.1:6379> lrange list 0 -1
1) "one"

 

#=====================================

# lindex :按照索引下标获得元素(-1代表最后一个  0代表第一个)

#=====================================

127.0.0.1:6379> lindex list 1
(nil)
127.0.0.1:6379> lindex list 0
"one"
127.0.0.1:6379> lindex list -1
"one"

 

#=====================================

# llen :用于返回列表的长度

#=====================================

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> llen list                #返回列表的长度
(integer) 3

 

#=====================================

# lrem key :根据参数 count的值  移除列表中与参数value相等的元素

#=====================================

127.0.0.1:6379> lrem list 1 two
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "one"

 

#=====================================

# ltrim key :对一个列表进行修剪(trim)就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

#=====================================

127.0.0.1:6379> rpush mylist wyt
(integer) 1
127.0.0.1:6379> rpush mylist lmp
(integer) 2
127.0.0.1:6379> rpush mylist hyd
(integer) 3
127.0.0.1:6379> rpush mylist yjy
(integer) 4
127.0.0.1:6379> ltrim mylist 1 2
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "lmp"
2) "hyd"

 

#=====================================

# rpoplpush :移除列表的最后一个元素,并将该元素添加到另一个列表并返回

#=====================================

127.0.0.1:6379> rpush list hello
(integer) 1
127.0.0.1:6379> rpush list foo
(integer) 2
127.0.0.1:6379> rpush list bar
(integer) 3
127.0.0.1:6379> rpoplpush list myotherlist
"bar"
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "foo"
127.0.0.1:6379> lrange myotherlist 0 -1
1) "bar"

#=====================================

# lset key index  value :将列表 可以 下标为index的元素的值设置为value

#=====================================

127.0.0.1:6379> exists list                 #对空列表进行lset
(integer) 0
127.0.0.1:6379> lset list 0 item           #报错
(error) ERR no such key
127.0.0.1:6379> lpush list one           #对非空列表进行 lset
(integer) 1        
127.0.0.1:6379> lrange list 0 -1 
1) "one"
127.0.0.1:6379> lset list 0 new           #更新值
OK
127.0.0.1:6379> lrange list 0 0
1) "new"
127.0.0.1:6379> lset list 1 new   #index超出范围报错
(error) ERR index out of range

 

# ===================================================
# linsert key before/after pivot value 用于在列表的元素前或者后插入元素。
# 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
# ===================================================

性能总结

  1. 它是一个字符串链表,leftright 都可以插入添加
  2. 如果键不存在,创建新的链表
  3. 如果键已存在,新增内容
  4. 如果值全移除,对应的键也就消失了
  5. 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了
list 就是链表,略有数据结构知识的人都应该能理解其结构。使用 Lists 结构,我们可以轻松地实现最新消息排行等功能。List 的另一个应用就是消息队列,可以利用 List PUSH 操作,将任务存在 List 中,然后工 作线程再用POP 操作将任务取出进行执行。 Redis 还提供了操作 List 中某一段的 api ,你可以直接查询,删 除List 中某一段的元素。
Redis list 是每个子元素都是 String 类型的双向链表,可以通过 push pop 操作从列表的头部或者尾部 添加或者删除元素,这样List 即可以作为栈,也可以作为队列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值