锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Redis数据类型-列表List

时间:2022-09-16 18:00:00 lmp331液压变送器

列表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"

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

# ltrimkey :修剪列表(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 即可以作为栈,也可以作为队列。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章