Redis数据类型-List

一.概述

Java中 :  数组  Arraylist  ,链表 linkedList

数组的特点:根据索引取值速度是极快的(和数据量的大小无关)

                     数组的增删改查,效率极低(数据量越大,效率越低)

链表的特点:链表的元素增删,效率极高(和数据量的大小无关)

                     根据索引取值,效率极低(数据量越大,效率越低)

为什么redis选取了链表?

因为redis操作中,做的最多的操作是元素的增删 

使用环境:

1.     做大数据集合的增删

2.     做任务队列

二.List的命令

注意:redis中是用链表来存储数据的,链表的头称为左端,链表的尾称为右端

1.取值

1.查看列表

lrangkey start end

获取链表中从start到end的元素的值,start、end从0开始计数;也可以为负数,若为-1,则表示链表尾部的元素,-2表示倒数第二个,依次类推
2.赋值

1.俩端添加

 lpush key values[value1,value2…] 

在指定的key所关联的list头部插入所有的values,如果该key不存在,该命令在执行插入之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数
 rpush key values[value1,value2…] 

在该list的尾部添加元素,返回元素的个数

注意:这俩个命令的添加效果是不一样的     

 lpush list1 a,b,c,d -------------à添加后的顺序:d,c,b,a

 rpush list2 a,b,c,d ------------à添加后的顺序:a,b,c,d
3.删除

1.两端弹出(本质就是删除)

 lpop key

 返回并弹出指定的key关联的链表中的第一个元素,即头部元素,如果该key不存在,则返回(nil),若key存在,则返回链表的头部元素
 rpop key

 返回并弹出指定的key关联的链表中的最后一个元素,即尾部元素,如果该key不存在,则返回(nil)若key存在,则返回链表的尾部元素

注意:redis是不会保留空字符串,空键值对的

三.list的扩展命令

获取列表中的元素个数

 llen key

 返回指定的key关联的链表中的元素数量

删除某个元素(效率极为低下,了解即可)

lrem key count value 

删除count个值为value的元素,如果count大于0,从头到尾遍历并删除count 个值为value的元素;如果count小于0,从尾到头遍历并删除count个值为value的元素;如果count等于0,则删除链表中所有等于value的数据

通过索引替换元素(效率不高)

lset keyindex value

设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素,操作链表的脚标,不存在则抛异常

在索引前/后插入元素(效率不高)

linsert key before/after pivot value

在pivot元素前或者后插入value这个元素

做任务队列需要

rpoplpush resource destination

将链表中的尾部元素弹出并添加到头部(可以循环操作)   
例如:
两排队列    
    rpoplpush list1 list2  
    把list1中的尾部元素弹出,并添加到list2
循环列表
    rpoplpush list1 list1
    把list1中的尾部元素弹出,添加到list1的头部


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值