一、基本介绍

对于list,它的存储需求是什么呢?对于string,讲究单个,hash也不讲究大量;当我们需要存储多个数据的时候,前面的数据类型就不大合适了。

  • 数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行访问
  • 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现存储顺序
  • list类型:保存多个数据,底层使用双向链表存储结构实现。

常见的几种结构对比:

顺序表:读取快,插入慢

链表:读取慢,插入快,显得不紧凑

对redis来说,采用双向链表,可以构建双向操作的场景,有顺序的概念。redis用于于具有操作先后顺序的数据控制;

二、基本操作

功能 命令 其他说明
添加修改数据

lpush key value1 value2...

rpush key value1 value2...

lpush是往左添加,rpush是往右添加;

返回list中元素的个数

获得数据

lrange key start stop

lindex key index

llen key

注意索引是从0开始的;比方说有3个元素,我们的命令

应该是:lrang list1 0 2;如果不知道具体有多少个,可以

使用:lrang list1 0 -1

是的,反着查,-1代表最后一个元素

llen key返回长度

获取并删除数据

lpop key 

rpop key

返回拿出来的元素

三、扩展操作

3.1 阻塞数据获取

功能 命令 其他说明
规定时间内获取并移除数据

blpop key [key2] timeout

brpop key [key2] timeout

相对前面的lpop,b代表的是block,阻塞的意思的意思是现在没有,

不代表将来没有,可以等,等多久呢,timeout(单位秒);

只要有,就立马取出来;

多个key的意思是,只有其中一个key有,就取;

这里就可以联想到我们任务队列的实现

3.2 移除指定数据

案例:微信朋友圈点赞,要求按照点赞顺序显示好友的昵称

key:朋友圈的ID   value:点赞朋友列表

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

功能 命令 其他说明
移除指定数据 lrem key count value

rang的意思是:list的元素是可以重复的,移除的时候可以指定移除多个,

当然这里移除点赞好友也只会有一个了;返回成功删除元素的个数

四、注意事项

  • list中保存的数据都是string类型的,数据总容量是有限的,最多2^32 - 1个元素
  • list具有索引的概念,但是通常操作数据时以队列的形式进行入队出队的操作,或者以栈的形式进行入栈出栈的操作
  • 获取全部数据操作结束锁应设置为-1
  • list可以对数据进行分页操作,通常第一页的信息来源于list,第二页及更多页信息通过数据库的形式加载

这一节就到这里,下一节写数据类型之set。

最新文章

  1. Mybatis异常--java.lang.IllegalArgumentException: NO ENUM const class org.apache.ibatis.type.JdbcType.int
  2. SOAOffice和iWebOffice、NTKO的比较及其优势(转)
  3. myeclicps开发web时候复制一个工程改名字后执行出现404错误
  4. XML dom
  5. nvl isnull coalesce
  6. [国嵌攻略][068][tftp网络协议实现]
  7. Python Learning: 01
  8. mac安装postman
  9. cc.Node 的坐标空间与ACTION的学习
  10. C#控件——批量化隐藏或显示同类型控件
  11. Confluence 6 选择一个外部数据库
  12. 利用朴素贝叶斯分类算法对搜狐新闻进行分类(python)
  13. linux下查找某文件关键字(grep 函数)
  14. MongoDB中MapReduce介绍与使用
  15. php 安装mongo扩展(其他扩展同理)
  16. PAT 1009 说反话 (20)(代码)
  17. Solidworks如何在零件表面贴图
  18. TensorFlow新版与旧版易出错的地方
  19. thinkphp5部署在宝塔面板问题!
  20. dataTransfer 对象

热门文章

  1. 树(二叉树 & 二叉搜索树 & 哈夫曼树 & 字典树)
  2. 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
  3. 对于dijkstra最短路算法的复习
  4. 编程体系结构(07):JavaEE之Web开发
  5. sqlserver 分列
  6. ASP。NET MVC (NetCore 2.0)用于处理实体框架、DbContexts和对象的通用控制器和视图
  7. iOS使用NSTextAttachment添加图片,图片模糊
  8. 实验 5:OpenFlow 协议分析和 OpenDaylight 安装
  9. 多测试_mysql数据库_09
  10. 福州11911.562(薇)xiaojie:福州哪里有xiaomei