Redis数据类型之List类型

    技术2022-07-15  64

    定义

    List类型是一个链表结果的集合,其主要功能有push、pop、获取元素等,List类型是一个双向链表的结构,可以实现在集合的头部或尾部添加 和删除元素,List即可以作为栈,又可以作为队列,满足大多数需求 按照插入顺序排序,可以添加一个元素到列表的头部或者尾部,一个列表最多可以包含2^32-1个元素(每个列表超过40亿个元素)类似于Java中的LinkedList

    常用语法命令

    赋值 1、将一个或多个值插入到列表头部(从左侧添加)

    LPUSH key value1 [value2]

    2、将一个或多个值插入到列表尾部(从右侧添加)

    RPUSH key value1 [value2]

    3、将一个值插入到已存在的列表头部,如果列表不存在,操作无效

    LPUSHX key value

    4、将一个值插入到已存在的列表尾部,如果列表不存在,操作无效

    RPUSHX key value

    取值 1、获取列表长度

    LLEN key

    2、通过索引获取列表中的元素

    LINDEX key index

    3、获取列表指定范围内的元素,区间以偏移量start和stop指定,其中0表示列表中第一个元素,1表示列表中第二个元素,也可以使用负数作为下标,-1表示列表中的最后一个元素,-2表示列表中的倒数第二个元素 start:页大小*(页数-1) stop:(页大小*页数)-1

    int start = (pageNum - 1) * pageSize; int stop = pageSize * pageNum - 1; LRANGE key start stop

    删除 1、移除并获取列表中的第一个元素(从左侧删除)

    LPOP key

    2、移除并获取列表中的第一个元素(从左侧删除)

    RPOP key

    3、移除并获取列表的第一个元素,如果列表中没有元素会阻塞列表直到等待timeout秒后超时,返回nil或发现可弹出元素为止

    BLPOP key1 [key2] timeout

    4、移除并获取列表的最后一个元素,如果列表中没有元素会阻塞列表直到等待timeout秒后超时,返回nil或发现可弹出元素为止

    BRPOP key1 [key2] timeout

    如:

    127.0.0.1:6379> brpop list3 10 (nil) (10.06s)

    5、对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

    LTRIM key start stop

    修改 1、通过索引设置列表元素的值

    LSET key index value

    2、在列表的元素前或后插入元素,将值value插入到列表key当中,位于world之前或之后

    LINSERT key BEFORE|AFTER world value

    高级语法命令

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

    RPOPLPUSH source destination

    2、从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回,如果列表没有元素会阻塞列表直到等待timeout秒后超时返回nil或者发现可弹出元素为止

    BRPOPLPUSH source destination timeout

    应用场景

    1、对数据量大的集合数据删减 列表数据显示、关注列表、粉丝列表、留言评价、分页、热点新闻(top5)等,利用LRANGE还可以实现分页功能,在博客系统中,每篇博文的评论也可以单独存到一个list中 2、任务队列 list通常用来实现一个消息队列,而且还可以确保先后顺序,不需要像关系型数据库使用order by来进行排序

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

    Processed: 0.013, SQL: 9