欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis学习笔记(八)---数据类型之list

程序员文章站 2022-07-05 10:17:18
...

1. list (相当于Java语言中的LinkedList类型)

1.1 简介

Redis列表是简单的字符串列表,按照插入的顺序排序,你可以添加一个元素列表的头部(左边) 或者尾部(右边)一个列表最多可以包含 2^32 - 1个元素(每个列表超过40亿个元素)

1.2 命令

[1] 赋值语法:
lpush key value1 [value2] //将一个或多个值插入到列表头部(从左侧添加)

代码示例:
127.0.0.1:6379> lpush l1 a b c d e
(integer) 5
127.0.0.1:6379> lrange l1 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"

rpush key value1 [value2] //将列表中添加一个或多个值(从右侧添加)

代码示例:
127.0.0.1:6379> rpush l2 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange l2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
lpush  key value               //将一个值插入到已存在的列表头部。如果列表不存在,操作失效
RPUSHX key value               //一个值插入已存在的列表尾部(最右边)。如果列表不存在,操作失效

[2] 取值语法:

 llen  key   //获取列表长度
lindex  key index   //通过索引获取列表中的元素
lrange key start stop   //获取列表指定范围内的元素

描述: 返回列表中指定区间内的元素,区间以偏移量START 和 END指定,其中0 表示列表第一个元素,1表示第二个元素,以此类推。也可以使用负数下标,以 -1 表示列表中最后一个元素, -2 表示列表中倒数第二个元素,以此类推。

[3] 删除语法

 lpop key       移除并获取列表的第一个元素(从左侧删除)
 
 rpop key    移除列表中最后一个元素,返回值为移除的元素(从右侧移除)
 
 blpop key1[key2] timeout    移出并获取列表中的第一个元素,如果列表中没有元素会阻塞列表直到等待超时或发现可弹出元素为止
  (说明:如果指定列表中的 key list1 存在数据则返回第一个元素,否则等待相应的s后返回 nil )
  
 brpop key1[key2] timeout    移出并获取列表中的最后一个元素,如果列表中没有元素会阻塞列表直到等待超时或发现可弹出元素为止
 
 ltrim  key start stop   对一个列表进行修剪(trim) , 就是说让列表只保留在暂定区间内的元素,不在指定区间之内的元素将被删除

[4] 修改语法:

lset  key index value                       通过索引设置列表元素的值
linsert key before|after  world value       在列表的元素前或者后插入元素
描述:将值 value 插入到列表 key 当中,位于 world 之前或之后

[5] 高级语法

rpoplpush source destination 
移除列表的最后一个元素,并将该元素添加到另一个列表并返回
示例描述:
rpoplpush a1 a2    //a1的最后元素移到a2的左侧
rpoplpush a1 a1    //循环列表,将最后元素移到最左侧

brpoplpush  source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

1.3应用场景

项目常应用于:

1.对数据量大的集合数据删减

列表显示,关注列表,粉丝列表,留言评价等…分页,热点新闻(Top5)等
利用LRANGE 还可以很方便的实现分页的功能,在博客系统中,每片博文的评论存入一个单独的 list 中

2.任务队列

( list 通常来实现一个消息队列,而且可以确保先后顺序,不必像 MySql 那样还需要通过Order By 来进行排序)

任务队列介绍(生产者和消费者模式)

在处理Web客户端发送的命令请求时,某些操作的执行时间可能会比我们预期的更长一些,通过将待执行任务相关信息放入队列里面,并在之后对队列进行处理,用户可以推迟执行那些需要一段时间才能完成的操作,这种将工作交给任务处理器来执行的做法称为任务队列。(task queue)

rpopplush source destination

移除列表的最后一个元素,并将该元素添加到另一个列表并返回
示例描述:
常用案例:订单系统的下单流程,用户系统登录注册短信等

相关标签: Redis