List类型是一个链表结果的集合,其主要功能有push、pop、获取元素等,List类型是一个双向链表的结构,可以实现在集合的头部或尾部添加 和删除元素,List即可以作为栈,又可以作为队列,满足大多数需求 按照插入顺序排序,可以添加一个元素到列表的头部或者尾部,一个列表最多可以包含2^32-1个元素(每个列表超过40亿个元素)类似于Java中的LinkedList
赋值 1、将一个或多个值插入到列表头部(从左侧添加)
LPUSH key value1 [value2]2、将一个或多个值插入到列表尾部(从右侧添加)
RPUSH key value1 [value2]3、将一个值插入到已存在的列表头部,如果列表不存在,操作无效
LPUSHX key value4、将一个值插入到已存在的列表尾部,如果列表不存在,操作无效
RPUSHX key value取值 1、获取列表长度
LLEN key2、通过索引获取列表中的元素
LINDEX key index3、获取列表指定范围内的元素,区间以偏移量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 key2、移除并获取列表中的第一个元素(从左侧删除)
RPOP key3、移除并获取列表的第一个元素,如果列表中没有元素会阻塞列表直到等待timeout秒后超时,返回nil或发现可弹出元素为止
BLPOP key1 [key2] timeout4、移除并获取列表的最后一个元素,如果列表中没有元素会阻塞列表直到等待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 value2、在列表的元素前或后插入元素,将值value插入到列表key当中,位于world之前或之后
LINSERT key BEFORE|AFTER world value1、移除列表的最后一个元素,并将该元素添加到另一个列表并返回
RPOPLPUSH source destination2、从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回,如果列表没有元素会阻塞列表直到等待timeout秒后超时返回nil或者发现可弹出元素为止
BRPOPLPUSH source destination timeout1、对数据量大的集合数据删减 列表数据显示、关注列表、粉丝列表、留言评价、分页、热点新闻(top5)等,利用LRANGE还可以实现分页功能,在博客系统中,每篇博文的评论也可以单独存到一个list中 2、任务队列 list通常用来实现一个消息队列,而且还可以确保先后顺序,不需要像关系型数据库使用order by来进行排序
任务队列介绍(生产者和消费者模式) 在处理Web客户端发送的命令请求时,某些操作的执行时间可能会比我们预期的更长一些,通过将待执行任务的相关信息放入队列里面,并在之后对队列进行处理,用户可以推迟执行那些需要一段时间才能能完成的操作,这种将工作交给任务处理器来执行的做法被称为任务队列(task queue)。