目录

​一.list类型的介绍与基本操作​

​二.redis中list类型的存储结构​

​三.list类型数据基本操作​

​四.list类型数据扩展操作​

​五.list类型的业务场景使用(一)​

​六.list实现业务场景(二)​

​七. list类型常用的解决方案:​


 

一.list类型的介绍与基本操作

       1.list类型

数据进入存储空间的顺序进行区分.

进入顺序

底层使用双向链表存储结构实现

       2.数组,链表,双向链表的概念

查询快,插入慢

查询慢,插入快

              单向链表:

               

redis 学习笔记(四)list数据类型_数据

              双向链表:

               

redis 学习笔记(四)list数据类型_数据_02

             如果来一个新的节点,相关的顺序:

              

redis 学习笔记(四)list数据类型_数据_03

             

redis 学习笔记(四)list数据类型_数据_04

              list就是双向链表的结构

 

 二.redis中list类型的存储结构

         1.数据存储需求:存储多个数据,并对数据进行存储空间顺序进行区分

              redis存储空间


redis 学习笔记(四)list数据类型_双向链表_05

                   双向链表有助于构建特殊业务

                   --------------------------------------

 

                   ---------------------------------------

 

                 可以左进也可以右进

                 左进左出===栈

                 右进左出===队列

三.list类型数据基本操作

               (左头右尾)

       1.添加/修改数据

                lpush key value1  value2 ...            left左进

           

redis 学习笔记(四)list数据类型_双向链表_06

                rpush key value1 value2 ...             right右进

          

redis 学习笔记(四)list数据类型_数据_07

           2.获取数据

               lrange key  start  stop

            

redis 学习笔记(四)list数据类型_数据_08

               lindex  key index   查询第几个进入得,从索引0开始

            

redis 学习笔记(四)list数据类型_redis_09

LLEN 

           

redis 学习笔记(四)list数据类型_双向链表_10

         3.获取并移除数据

             lpop key  获取并移除一个,左出

            

redis 学习笔记(四)list数据类型_数据_11

             rpop  key  获取并移除一个右出

            

redis 学习笔记(四)list数据类型_redis_12

     例子:右进左出

         

redis 学习笔记(四)list数据类型_redis_13

   

redis 学习笔记(四)list数据类型_双向链表_14

   lrange list 0 -1 展示全部信息

          

redis 学习笔记(四)list数据类型_redis_15

  四.list类型数据扩展操作

        1.规定时间内获取并移除数据

没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

元素所属的 key ,第二个元素是被弹出元素的值。

             

redis 学习笔记(四)list数据类型_数据_16

           brpop  key1  [key2]    timeout 右取  假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。

          反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

             

redis 学习笔记(四)list数据类型_redis_17

 总结 :阻塞版本

 取数据时可以等待 ,有数据便返回,没有数据时将在规定时间之外返回

    五.list类型的业务场景使用(一)

           业务场景1:

按点赞顺序点赞显示点赞好友信息

                       如果取消点赞,移除对应好友的信息

从中间取出数据

          解决方案:

                      移除指定位置的数据

lrem  key count value

                              key 队列名   count 移除几个   value删除哪个元素

                             

redis 学习笔记(四)list数据类型_数据_18

redis应用具有操作先后顺序的数据控制

    六.list实现业务场景(二)

             (一).list类型数据操作注意事项

有限的,且均为String类型,最多2^32  -1个元素

索引的概念,但操作数据时,通常以队列的形式入队,出队的操作或以栈入栈出栈的操作

分页操作,通常第一页的信息来自于list.第二页以及更多信息通过数据库的形式加载

           (二)业务场景

顺序进行展示,粉丝列表需要将最近关注的粉丝列在前面

时间顺序展示

统一顺序输出

ELK日志系统

              

redis 学习笔记(四)list数据类型_redis_19

redis应用于最新消息的展示

   

七. list类型常用的解决方案:

顺序特征对信息进行管理

队列模型解决多路信息汇总合并的问题

栈解决最新消息的问题