专题四: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最基本的类 ...
随机推荐
- Metasploit之漏洞利用( Metasploitable2)
每个操作系统都会存在各种Bug,像Windows这样有版权的操作系统,微软公司会快速地开发针对这些Bug或漏洞的补丁,并为用户提供更新.全世界有大量的漏洞研究人员会夜以继日地发现.研究新的Bug,这些 ...
- Spark 模型选择和调参
Spark - ML Tuning 官方文档:https://spark.apache.org/docs/2.2.0/ml-tuning.html 这一章节主要讲述如何通过使用MLlib的工具来调试模 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- Python中matplotlib.pyplot.imshow画灰度图的多种方法
转载:https://www.jianshu.com/p/8f96318a153f matplotlib库的教程和使用方法此处就不累赘了,网上有十分多优秀的教程资源.此处直接上代码: def demo ...
- P4552 [Poetize6] IncDec Sequence
Link 题目描述 给定一个长度为 \(n\) 的数列 \({a_1,a_2,\cdots,a_n}\),每次可以选择一个区间 \([l,r]\),使这个区间内的数都加 \(1\) 或者都减 \(1\ ...
- appium 环境安装指引
1.安装Appium-Python-Client Pip install Appium-Python-Client 2.安装nodejs https://nodejs.org/ 安装成功验证:node ...
- 持续集成工具之Jenkins安装部署
一.DevOps理念 所谓DevOps是指development和Operations的组合,中文意思就是开发和运维的简写.devops理念主要是针对企业中的研发人员.运维人员和测试人员的工作理念,是 ...
- gitlab介绍
1. GitLab简介 GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. GitLab拥有与G ...
- C#实现迭代器
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示.C#中使用IEnumerator接口实现,Java中使用Iterator接口实现,其中原理都差 ...
- 手撸ORM浅谈ORM框架之基础篇
好奇害死猫 一直觉得ORM框架好用.功能强大集众多优点于一身,当然ORM并非完美无缺,任何事物优缺点并存!我曾一度认为以为使用了ORM框架根本不需要关注Sql语句如何执行的,更不用关心优化的问题!!! ...