1.lpush/lpop/rpop/rpush/lrange

 这里的list就是链表,lpush就是从左往右插入数据,rpush就是从右往左插数据,lrange就是从左往右范围性的取值,pop就是弹出的意思,同理lpop就是从左边弹出一个值,rpop就是从右弹出一个值

注意lrange是范围性的读取值,pop是弹出,数据弹出后,该list就没有这个值了。

redis list 查看元素 redis查看list数据_redis list 查看元素

5

4

 3

2

1

 

list01

 

redis list 查看元素 redis查看list数据_redis list 查看元素_02

1

2

 3

4

5

 

list02

同理lpop rpop

 

redis list 查看元素 redis查看list数据_redis list 查看元素_03

redis list 查看元素 redis查看list数据_链表_04

 

所以可以看出来 redis的list是一个双向的链表

3.llen

 

redis list 查看元素 redis查看list数据_链表_05

很明显就是用来查看list的长度的,java中的size方法

 

4.lindex,按照索引下标获得元素(从上到下)

 

redis list 查看元素 redis查看list数据_数据结构与算法_06

--这里就是查看list01 列表中下角标为2的元素是什么,list的角标是从0开始的,所以这里角标为2的地方就是第三个数据就是2

 

5.lrem key 删N个value(list remove key)  lrem key count value(就是删除key中的count个value值)

 

redis list 查看元素 redis查看list数据_java_07

--删除了list01列表中的2个1值 

redis list 查看元素 redis查看list数据_redis list 查看元素_08

--从这里可以看出lrem 命令删除元素的时候是从左往右遍历出来删除的。

 

6.ltrim key 开始index 结束index,截取指定范围的值后再赋值给key

 

redis list 查看元素 redis查看list数据_链表_09

--这里可以看出 ,是截取list02列表的下角标 1和2的数据重新赋值给了list02

 

7.lset key index value(给key列表的下角标为index的赋值value)

 这里就是和lindex相辅相成了  这里就是给list列表中的某个下角标元素赋值

redis list 查看元素 redis查看list数据_redis list 查看元素_10

redis list 查看元素 redis查看list数据_redis list 查看元素_11

--当给超出list列表下角标范围赋值的时候,就会error index out of range

 

8.rpoplpush 源列表 目的列表(就是从源列表中右边弹出一个数据从左到右的插到目的列表中去)

 

redis list 查看元素 redis查看list数据_数据结构与算法_12

 

9.linsert key before/after 值1 值2(这里就是在key列表的值1前面或者后面插入一个值2,这里很明显要从左往右遍历找到值1然后再根据前继或者后继插入值2)

 

redis list 查看元素 redis查看list数据_链表_13

--这里就是在list01 列表的值为1的地方前面插入vv

 

10.性能

它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。