List类型是一个链表结构的集合,其主要功能有push(从链表尾部插入一个元素)、pop(从链表头部移除一个元素)、获取元素等。更详细的说,List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,list的设计非常简单精巧,既可以作为栈,又可以作为队列。满足绝大多数需求。
redis中list类型允许元素重复,而set类型不允许元素重复
lpush方法:从头部加入元素(栈)先进后出
形如:lpush list1 "hello"
lpush list1 "world"
lrange list1 0 -1(表示从头取到末尾)(0到负1)
rpush方法:从尾部加入元素(队列)先进先出
形如:rpush list2 "beijing"
rpush list2 "tiananmen"
lrange list2 0 -1
linsert方法:插入元素
形如:linsert list3 before [集合的元素][插入的元素]
举例:
lpush list3 "one"
lpush list3 "two"
linset list3 before "one" "three"
lrange list3 0 -1
结果为:
1) two
2) three
3) one
lset方法:将指定下表的元素替换掉
举例:
命令:rpush list4 "bei"
命令:rpush list4 "jing"
命令:lrange list4 0 -1
结果:1) "bei"
2) "jing"
命令:lset list4 0 "b"
命令:lset list4 1 "j"
命令:lrange list4 0 -1
结果:1) "b"
2) "j"
lrem方法:删除元素 返回删除的个数
命令:lrange list5 0 -1
结果:1) "b"
2) "jing"
3) "b"
4) "b"
5) "jing"
命令:lrem list5 2 "b"
命令: lrange list5 0 -1
结果:1) "jing"
2) "b"
3) "jing"
ltrim方法:保留指定key的值范围内的数据
命令:lrange list6 0 -1
结果:1) "one"
2) "two"
3) "three"
4) "four"
命令:ltrim list6 2 3
命令:lrange list6 0 -1
结果:1) "three"
2) "four"
lpop方法:从list的头部删除元素,并返回删除元素
rpop方法:从list的尾部删除元素,并返回删除元素
举例:
命令:lrange list7 0 -1
结果:1) "python"
2) "php"
3) "C#"
4) "java"
命令:lpop list7
返回结果:"python"
命令:rpop list7
放回结果:"java"
命令:lrange list7 0 -1
结果:1) "php"
2) "C#"
rpoplpush方法:第一步从尾部删除元素,然后第二步并从头部加入元素
lindex方法:返回名称为key的list中index位置的元素
llen方法:返回元素的个数
举例:
命令:lrange list8 0 -1
结果:1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
命令:rpoplpush list8 list8
返回结果:"e"
命令:lrange list8 0 -1
结果:1) "e"
2) "a"
3) "b"
4) "c"
5) "d"
命令:lindex list8 1
返回结果:"a"
命令:llen list8
返回结果:5