专题四:redis的数据类型之list
一、基本介绍
对于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。
专题四:redis的数据类型之list的更多相关文章
- Redis常用数据类型
Redis常用数据类型 转载自:http://blog.sina.com.cn/s/blog_7f37ddde0101021q.html Redis最为常用的数据类型主要有以下五种: ●Str ...
- Redis的数据类型及相关操作命令
redis 基础内容 —— redis的数据类型及相关操作的Linux命令.所谓大厦千层基础承载,希望大家认真学习这一讲: 一.redis 的五大数据类型: 1.String(字符串): 2.List ...
- Redis 详解 (四) redis的底层数据结构
目录 1.演示数据类型的实现 2.简单动态字符串 3.链表 4.字典 5.跳跃表 6.整数集合 7.压缩列表 8.总结 上一篇博客我们介绍了 redis的五大数据类型详细用法,但是在 Redis 中, ...
- 一文搞定Redis五大数据类型及应用场景
本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...
- Redis之Redis的数据类型
1.Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及ZSet(有序集合) 2.String(字符串) ...
- Redis常用数据类型及其存储结构(源码篇)
一.SDS 1,SDS源码解读 sds (Simple Dynamic String),Simple的意思是简单,Dynamic即动态,意味着其具有动态增加空间的能力,扩容不需要使用者关心.Strin ...
- Redis常用数据类型以及操作
Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...
- Redis常用数据类型介绍、使用场景及其操作命令
Redis常用数据类型介绍.使用场景及其操作命令 本文章同时也在cpper.info发布. Redis目前支持5种数据类型,分别是: 1.String(字符串) 2.List(列表) 3.Hash(字 ...
- Redis笔记(三)Redis的数据类型
前面说过,Redis的一大特性是支持丰富的数据类型, 这为更多的应用场景提供了可能. Redis有五种数据类型,包括string,list,set,sorted set和hash,注意,Redis的数 ...
- Redis基本数据类型
-------------------Redis基本数据类型------------------- 1.String 字符串 1.概念 1.String 是redis最基本的类 ...
随机推荐
- 对之前IoT项目的完善
博文有点长,因为是两个大项目(四个小项目)放一起了,不过都很适合新手小白(有源程序的情况),也可以再接 OLED 屏,就是前几篇博客的操作 一.esp8266 读取 DHT11 数据并通过微信小程序发 ...
- RocketMQ 笔记
Queue Topic和Queue是1对多的关系,一个Topic下可以包含多个Queue,主要用于负载均衡.发送消息时,用户只指定Topic,Producer会根据Topic的路由信息选择具体发到哪个 ...
- Pipelines
https://blog.csdn.net/buracag_mc/article/details/100155599 ML Pipelines提供了一组基于DataFrame构建的统一的高级API,可 ...
- 日志分析平台ELK之日志收集器logstash
前文我们聊解了什么是elk,elk中的elasticsearch集群相关组件和集群搭建以及es集群常用接口的说明和使用,回顾请查看考https://www.cnblogs.com/qiuhom-187 ...
- 深入解读 ASP.NET Core 身份认证过程
长话短说:上文我们讲了 ASP.NET Core 基于声明的访问控制到底是什么鬼? 今天我们乘胜追击:聊一聊ASP.NET Core 中的身份验证. 身份验证是确定用户身份的过程. 授权是确定用户是否 ...
- 前端gitlab-ci.yml 入门
说起来使用gitlab也有大半年了,每天都在跑pipeline,但是却没有好好研究过这个叫gitlab-ci.yml的文件.这次借着发布流程升级的机会,好好入门了一下. 主要分以下内容: stages ...
- Morris遍历
Morris遍历 一种遍历二叉树的方式,并且时间复杂度O(N),额外空间复杂度O(1) 通过利用原树中大量空闲指针的方式,达到节省空间的目的 Morris遍历可以改前中后序的树遍历 思路: 创建一个当 ...
- farbic-sdk-java 学习部署
准备工作 1.fabric基础网络环境 2.环境准备(jdk环境.maven环境) 3.启动fabric测试网络 4.在idea中测试java-sdk 1.fabric环境准备 1.fabric基础环 ...
- 两个多维高斯分布之间的KL散度推导
在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异.并且损失可以定义得很简单,比如二范数即可.但是对于已知参数的两个确定分布之间的差异,我们就要通过推导 ...
- Apache Hudi与Apache Flink集成
感谢王祥虎@wangxianghu 投稿 Apache Hudi是由Uber开发并开源的数据湖框架,它于2019年1月进入Apache孵化器孵化,次年5月份顺利毕业晋升为Apache顶级项目.是当前最 ...