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的集合操作( ...
随机推荐
- 后台大哥请进一步:使用Visual Studio编译scss和souce map实现前后端的完美结合
title: 后台大哥请进一步:使用Visual Studio编译scss和souce map实现前后端的完美结合 date: 2020-06-28 sidebarDepth: 2 tags: win ...
- List<Object>
... package str; import java.util.ArrayList; import java.util.List; public class arrayText { public ...
- Python 循环控制
for循环 Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串 for 变量 in 列表.字典.字符串.函数: 执行语句 ...
- Java安全之基于Tomcat的Filter型内存马
Java安全之基于Tomcat的Filter型内存马 写在前面 现在来说,内存马已经是一种很常见的攻击手法了,基本红队项目中对于入口点都是选择打入内存马.而对于内存马的支持也是五花八门,甚至各大公司都 ...
- [Net 6 AspNetCore Bug] 解决返回IAsyncEnumerable<T>类型时抛出的OperationCanceledException会被AspNetCore 框架吞掉的Bug
记录一个我认为是Net6 Aspnetcore 框架的一个Bug Bug描述 在 Net6 的apsnecore项目中, 如果我们(满足以下所有条件) api的返回类型是IAsyncEnumerabl ...
- Qt Creator 源码学习笔记03,大型项目如何管理工程
阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如 ...
- Atcoder Regular Contest 089 D - ColoringBalls(DP)
Atcoder 题面传送门 & 洛谷题面传送门 神仙题. 在下文中,方便起见,用 R/B 表示颜色序列中球的颜色,用 r/b 表示染色序列中将连续的区间染成的颜色. 首先碰到这一类计算有多少个 ...
- [CF707 Div2, A ~ D]
(相信进这个博客的人,都已经看过题目了,不再赘述) 这把打小号打到了\(484\),\(rating + 636\) \(A\) 考虑进行模拟就行了,说白了这是一个英语阅读题 // code by D ...
- Hermite WENO 重构格式
Hermite WENO 单元重构 本文主要介绍采用 Hermite WENO 重构方法作为斜率限制器应用于二维或高维单元中. 1.简介[1] ENO格式最早由 Harten 等[2]提出,ENO格式 ...
- R语言与医学统计图形【7】低级绘图函数
R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...