专题四: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最基本的类 ...
随机推荐
- 曹工说Tomcat:200个http-nio-8080-exec线程全都被第三方服务拖住了,这可如何是好(上:线程模型解析)
前言 这两年,tomcat慢慢在新项目里不怎么接触了,因为都被spring boot之类的框架封装进了内部,成了内置server,不用像过去那样打个war包,再放到tomcat里部署了. 但是,内部的 ...
- MySQL触发器初试:当A表插入新记录,自动在B表中插入相同ID的记录
今天第一次用MySQL的触发器,怕忘了,赶紧写篇博客记录一下. 废话不说,先上语法: 1 CREATE TRIGGER trigger_name 2 { BEFORE | AFTER } { INSE ...
- 第一次面试linux后台岗位
今天给大家分享前段时间面试linux后台的面试题目,我从里面挑了几道大家比较陌生的题目,而且要那种手写代码的题目,这方面肯定很多人在实际面试时最怕的题目! 1.请说出如何用tcp服务实现文件的断点续传 ...
- c++中sprintf和sprintf_s的区别
参考:https://blog.csdn.net/qq_37221466/article/details/81140901 sprintf_s是sprintf的安全版本,指定缓冲区长度来避免sprin ...
- Arduino 串口库函数
库函数目录 if (Serial) available() availableForWrite() begin() end() find() findUntil() flush() parseFloa ...
- C#怎么从List集合中随机取出其中一个值
1.首先在该命名空间下创建一个实体,和在Main方法下List集合,为后续做准备: /// <summary> /// 实体 /// </summary> public cla ...
- STM32F103C8T6-CubeMx串口收发程序详细设计与测试(2)——程序规划、代码编写及测试
摘要:演示程序的功能:通过中断接收串口数据,在1750us时间内没有收到新的字节的话,将收到的数据原封不动地发送出去,以测试串口的完整收发流程.对使用到的函数进行了说明,阐述了各个函数的调用顺序和调用 ...
- CRUD,分页,排序,搜索与AngularJS在MVC
下载source - 53.1 MB 介绍 在选择最新的技术时,有几个因素会起作用,包括这些技术将如何与我们的项目集成.这篇文章解决了开始使用AngularJS和MVC的乞丐的问题.这篇文章告诉使用语 ...
- Windows10系统下wsappx占用CPU资源过高?wsappx是什么?如何关闭wsappx进程?
在Windows10系统开机的时候,wsappx进程占用的CPU资源非常高,导致电脑运行速度缓慢,那么我们如何关闭wsappx进程,让电脑加快运行速度呢?下面就一起来看一下操作的方法吧. [现象] 1 ...
- git的项目完整操作
今天来说下项目中git 的使用,针对常规操作: 然后执行 git status 可以看到目前的状态: 再执行添加操作 git add . 添加所有文件 接着执行提交命令 git com ...