redis中的list集合数据类型,是一种双向链表的结构,list存在的元素是任意的string类型。那么redis是如何管理和操作list集合数据的呢,下文将阐述redis list集合的基本语法使用:
1、添加/创建一个list对象
# 分为栈式和队列两种添加 语法1:lpush [list集合] [元素] # 栈式添加元素,将list集合看成是一个栈类型,先进后出; 范例:lpush list1 hello lpush list1 world 阐述:遍历集合结果为:world, hello;也就是先进后出 语法2:rpush [list集合] [元素] # 队列式添加元素,先进先出 范例:rpush list2 hello rpush list2 world 阐述:遍历集合结果为:hello, world,先进先出,保持插入的顺序
2、遍历list集合元素
# 遍历都是从头部到尾部的过程 语法:lrange [集合] [开始索引] [结束索引] 范例:lrange list1 0 -1 # 结果为world,hello lrange list2 0 -1 # 结果为hello, world 阐述:索引位置是从0开始,-1表示最后一个元素索引
3、获取某个索引的集合元素
语法:lindex [list集合] [索引] 范例:lindex list3 0 # 如果不存在,返回nil,否则返回该索引位置的元素
4、修改某个索引位置的集合元素
# 修改指定索引位置的元素 语法:lset [list集合] [索引] [新元素] 范例:lset list1 0 Hello lrange list1 0 -1 # 之前0的位置是world,现在变成Hello
5、获取list集合的大小
语法:llen [list集合] 范例:llen list1 # 返回集合大小,2
6、插入某个元素
#插入元素不是通过索引来完成的,而是通过指定某个元素值的前,后插入 语法:linsert [list集合] [before | after] [元素] [待插入的元素] # 假设list4={‘hello‘,‘world‘,‘hello‘} 范例:linsert list4 before hello wang1 linsert list4 after hello wang2 阐述:list4集合中有两个hello元素,每次仅仅匹配一个,从list开头匹配。在执行before时,得到结果为{‘wang1‘,‘hello‘,‘world‘,‘hello‘};执行after时,{‘wang1‘,‘hello‘,‘wang2‘,‘world‘,‘hello‘}.
7、获取某个区间的元素列表
# 截取结合指定索引区间的元素,区间外的元素删除 语法:ltrim [list集合] [开始索引] [结束索引] 范例:ltrim list4 0 1 阐述:返回截取后的集合元素大小,遍历结果为{‘wang1‘,‘hello‘}
8、辅助方法
语法:rpoplpush [list集合1] [list集合2] 范例:rpoplpush list1 list2 阐述:从尾部删除list1中的一个元素,将其栈式插入到list2中,并返回list1删除的元素。相当于执行rpop list1,lpush list2
9、整体结构分析
由于list结构是双向链表结构,那么充头部插入或者从尾部差多都是OK的,lpush头部插入、lpop头部删除、rpush尾部插入、rpop尾部删除、lrange都是头部到尾部的遍历方式。
结构图如下:
时间: 2024-10-06 01:18:49