redis数据类型(四)list类型
一、list类型
list是一个链表结构,可以理解为一个每个子元素都是 string 类型的双向链表。
主要功能是push、pop、获取一个范围的所有值等。
操作中key理解为链表的名字。
二、List类型数据操作指令简介
- lpush key string 在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型。
- rpush key string 在key对应list的尾部添加字符串元素,返回LIST容器最新的长度。
- llen key 返回key对应list的长度,如果key不存在返回0,如果key对应类型不是list 返回错误。
- lrange key start end 返回指定区间内的元素,下标从0开始,负值表示从后面计算,-1表示倒数第一个元素 ,key不存在返回空列表。
- ltrim key start end 截取list指定区间内元素,成功返回1,key不存在返回错误。
- lset key index value 设置list中指定下标的元素值,成功返回1,key或者下标不存在返回错误。
- lrem key count value 从 List 的头部(count正数)或尾部(count负数)删除一定数量(count)匹配value的元素,返回删除的元素数量。count为0时候删除全部。
- lpop key 从list的头部删除并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误。
- rpop key 从list的尾部删除并返回删除元素。
- blpop key1 ...... keyN timeout 从左到右扫描,返回对第一个非空list进行lpop操作并返回,比如blpop list1 list2 list3 0 ,如果list不存在list2,list3都是非空则对list2做 lpop并返回从list2中删除的元素。如果所有的list都是空或不存在,则会阻塞timeout 秒,timeout为0表示一直阻塞。当阻塞时,如果有client对key1...keyN中的任意key 进行push操作,则第一在这个key上被阻塞的client会立即返回。如果超时发生,则返回 nil。有点像unix的select或者poll。
- brpop key1 ...... keyN timeout 同blpop,一个是从头部删除一个是从尾部删除。
- lpushx key string 在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型。
- rpushx key string 在key对应list的尾部添加字符串元素。
- lindex key index 根据索引值返回指定KEY LIST中的元素。0为第一个元素,1为第二个元素。-1为倒数第一个元素,-2为倒数第二个元素。如果指定了一个不存在的索引值,则返回FLASE。
- linsert 在指定LIST中的指定中枢VALUE的左侧或者右侧插入VALUE。如果这个LIST不存在,或者这个pivot(key position)不存在,那么这个VALUE不会被插入。
- rpoplpush 从源LIST的最后弹出一个元素,并且把这个元素从目标LIST的顶部(左侧)压入目标LIST。
- brpoplpush &emsop;从源LIST的最后弹出一个元素,并且把这个元素从目标LIST的顶部(左侧)压入目标LIST。