6、Redis五大数据类型---列表(List)
一、列表(List)简介
- 单键多值:Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
- 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
- 其底层有linkedList、zipList和quickList这三种存储方式。

list在redis常用作堆,栈。
二、常用命令
1、lpush/rpush lpush/rpush<key><value1> <value2><value3> 从左边/右边插入一个或多个值。
127.0.0.1:6379> lpush list a #在list左边插入a值
(integer) 1
127.0.0.1:6379> lpush list b #在list左边插入b值
(integer) 2
127.0.0.1:6379> lrange list 0 -1 #获取当前list所有值
1) "b"
2) "a"
127.0.0.1:6379> rpush list c #在list右边插入c值
(integer) 3
127.0.0.1:6379> rpush list d #在list右边插入d值
(integer) 4
127.0.0.1:6379> lrange list 0 -1 #获取list所有值
1) "b"
2) "a"
3) "c"
4) "d"
127.0.0.1:6379>

2、lpop/rpop lpop/rpop <key>从左边/右边吐出一个值。(值在键在,值光键亡。)
127.0.0.1:6379> lrange list 0 -1 #查看当前list所有值
1) "b"
2) "a"
3) "c"
4) "d"
127.0.0.1:6379> lpop list 1 #在左边弹出一个值
1) "b"
127.0.0.1:6379> rpop list 1 #在右边弹出一个值
1) "d"
127.0.0.1:6379> lrange list 0 -1 #获取list当中所有的值
1) "a"
2) "c"
127.0.0.1:6379> keys * #查看数据库的键
1) "list"
127.0.0.1:6379> rpop list 2 #将list中所有的都弹出去
1) "c"
2) "a"
127.0.0.1:6379> keys * #查看键是否存在
(empty array)
127.0.0.1:6379>
通过上述测试验证了,值在键在,值光键亡。
3、lrange lrange <key><start><stop> 按照索引下标获得元素(从左到右)
127.0.0.1:6379> lrange mylist 0 -1 #获取mylist里面的所有值,-1右边第一个
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lrange mylist 0 2 #获取下标0到2的值
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> lrange mylist 0 1 #获取下标0到1的值
1) "d"
2) "c"
127.0.0.1:6379>
4、lindex lindex<key><index>按照索引下标获得元素(从左到右)
127.0.0.1:6379> lrange mylist 0 -1 #获取mylist里面的所有值,-1右边第一个
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lindex mylist 0 #获取mylist集合中第0个元素
"d"
127.0.0.1:6379> lindex mylist 1 #获取mylist集合中第1个元素
"c"
127.0.0.1:6379> lindex mylist 2 #获取mylist集合中第2个元素
"b"
5、llen llen <key>获得列表长度
127.0.0.1:6379> lrange mylist 0 -1 #
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> llen mylist #获取mylist的长度
(integer) 4
127.0.0.1:6379> lpush mylist1 l #将l值加入mylist1中
(integer) 1
127.0.0.1:6379> llen mylist1 #获取mylist1的值
(integer) 1
6、linsert linsert <key> before/after <value><newvalue>在的后面插入插入值
127.0.0.1:6379> lrange mylist 0 -1 #获取mylist里面的所有值,-1右边第一个
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> linsert mylist before a m #在指定的值前面添加一个元素m
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1 #查看mylist里面的所有值
1) "d"
2) "c"
3) "b"
4) "m"
5) "a"
127.0.0.1:6379> linsert mylist after a n #在指定的值后边添加一个元素n
(integer) 6
127.0.0.1:6379> lrange mylist 0 -1 #查看mylist里面的所有值
1) "d"
2) "c"
3) "b"
4) "m"
5) "a"
6) "n"
127.0.0.1:6379>
7、lrem lrem <key><n><value>从左边删除n个value(从左到右)
127.0.0.1:6379> lrange mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lrem mylist 2 z #移除mylist中z元素,没有返回0
(integer) 0
127.0.0.1:6379> lrem mylist 2 a #移除mylist中2个a元素,如果只有一个a,就只能移除一个
(integer) 1
8、lset lset <key><index><value>将列表key下标为index的值替换成value
127.0.0.1:6379> lrange mylist 0 -1 #获取mylist立面的值
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lset mylist 0 m #将第0个元素替换成m
OK
127.0.0.1:6379> lrange mylist 0 -1 #获取mylist所有元素
1) "m"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379>
三、总结
list实际上是一个链表,before Node after ,left right都可以插入值
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除了所有值,空链表,代表不存在
在两边插入或者改动值,效率最高!中间元素效率相对较低
消息队列(Lpush Rpop) 栈(Lpush Lpop)
6、Redis五大数据类型---列表(List)的更多相关文章
- Redis五大数据类型的常用操作
在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...
- redis 五大数据类型使用
redis 五大数据类型使用 字符串str 单个值 127.0.0.1:6379> set name pp # 设置键值[O(1)] OK 127.0.0.1:6379> setex na ...
- 一文搞定Redis五大数据类型及应用场景
本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...
- 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型
热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....; => keys product* 订单的 ...
- Redis五大数据类型详解
关于Redis的五大数据类型,它们分别为:String.List.Hash.Set.SortSet.本文将会从它的底层数据结构.常用操作命令.一些特点和实际应用这几个方面进行解析.对于数据结构的解析, ...
- redis五大数据类型以及常用操作命令
Redis的五大数据类型 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意 ...
- 四:Redis五大数据类型
Redis的五大数据类型 1.string(字符串) string是Redis最基本的类型,你可以理解成与menmcached一模一样的类型,一个key对应一个value string类型是二进制安全 ...
- redis 基本数据类型-列表(List)
今天不瘦给大家分享一下redis第二个基本数据类型:列表.如果大家了解基本数据结构,相信大家对列表不会陌生,比如在C语言中我们可以使用数组实现一个列表,也可以使用链表实现一个列表(列表链表傻傻分不清楚 ...
- Redis五大数据类型以及操作
目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字典) 五.redis的集合操作( ...
随机推荐
- pytest-allure测试报告
该类型的警告大多属于版本更新时,所使用的方法过时的原因,可以在该方法的说明出查找替换的方法 1.安装allure a)下载allure.zip https://github.com/allure-fr ...
- PAT A1060——string的常见用法详解
string 常用函数实例 (1)operator += 可以将两个string直接拼接起来 (2)compare operator 可以直接使用==.!=.<.<=.>.>= ...
- Dapr-Actor构建块
前言: 前篇-绑定 文章对Dapr的绑定构建块进行了解,本篇继续对 Actor 构建块进行了解学习. 一.Actor简介: Actors 为最低级别的"计算单元". 换句话说,您将 ...
- 用idea生成javadoc在线文档
1.点击需要生成文档的包 2.点击tools--->选择generate javaDoc /1选择输出目录 /2防止中文乱码建议加上: -encoding utf-8 -charset utf- ...
- IPv4 寻址方式简介
IPv4 支持三种不同类型的寻址模式.单播寻址方式.广播寻址方式和组播寻址方式.本章节我们来介绍这些寻址方式. 单播寻址方式 在这种模式下,数据只发送到一个目标主机.Destination Addre ...
- CF1540B Tree Array
先写一下自己想到的部分: 考虑枚举一个根. 计算一个点对出现的概率. 对于我这种期望概率基本不会的人,差点就把这题切了. 自己想到的部分都没有假. 问题在于: 如何计算一个点对出现的概率. 考虑和这两 ...
- CentOS6.9安装python3
安装依赖包: yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel w ...
- Python基础之字典内置方法
目录 1. 字典 1.1 字典的作用 1.2 创建和使用字典 1.2.1 dict类 1.2.2 基本的字典操作 1.2.3 字典方法 1. 字典 映射:可以通过名称来访问其各个值的数据结构. 字典是 ...
- SpringBoot整合Shiro 三:整合Mybatis
搭建环境见: SpringBoot整合Shiro 一:搭建环境 shiro配置类见: SpringBoot整合Shiro 二:Shiro配置类 整合Mybatis 添加Maven依赖 mysql.dr ...
- 【NetCore】RabbitMQ 封装
RabbitMQ 封装 代码 https://gitee.com/wosperry/wosperry-rabbit-mqtest/tree/master 参考Abp事件总线的用法,对拷贝的Demo进行 ...