java redis数据list_[redis数据结构]之 list类型

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都是头部到尾部的遍历方式。

结构图如下:

d27608d9c784cac1f172d2ae5b76206f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值