list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等,操作中key理解为链表的名字。

Redis的list类型其实就是一个每个子元素都是string类型的双向链表我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。

lpush:在key对应list的头部添加字符串元素。(用法:lpush list链表名称 元素值)

127.0.0.1:6379> lpush address "Shang Hai"

(integer) 1

127.0.0.1:6379> lpush address huangpu

(integer) 2

127.0.0.1:6379> lrange address 0 -1

1) "huangpu"

2) "Shang Hai"

rpush:在key对应list的尾部添加字符串元素。(用法:rpush list链表名称 元素值)

127.0.0.1:6379> rpush address2 "Shang Hai"

(integer) 1

127.0.0.1:6379> rpush address2 "huangpu"

(integer) 2

127.0.0.1:6379> lrange address2 0 -1

1) "Shang Hai"

2) "huangpu"

linsert:在key对应list的特定位置前或后添加字符串。(用法:linsert list链表名称 before|after 指定的某个元素值  需要插入的新元素值)

127.0.0.1:6379> linsert address2 before "huangpu" ","

(integer) 3

127.0.0.1:6379> lrange address2 0 -1

1) "Shang Hai"

2) ","

3) "huangpu"

lset:设置list中指定下标的元素值,即替换指定下标的元素值。(用法:lset list链表名称  位置索引  元素新的值)

127.0.0.1:6379> lpush myColour "red"
(integer) 1
127.0.0.1:6379> lrange myColour 0 -1
1) "red"
127.0.0.1:6379> lset myColour 0 "yellow"
OK
127.0.0.1:6379> lrange myColour 0 -1
1) "yellow"

lrem:从key对应list中删除n个和value相同的元素。(n<0 从尾删除,n=0则全部删除。)(用法:lrem list链表名称 要删除几个  要删除的元素值)

127.0.0.1:6379> lrange myColour 0 -1

1) "pink"

2) "red"

3) "red"

4) "purple"

5) "red"

6) "yellow"

127.0.0.1:6379> lrem myColour 1 "red"

(integer) 1

127.0.0.1:6379> lrange myColour 0 -1

1) "pink"

2) "red"

3) "purple"

4) "red"

5) "yellow"

127.0.0.1:6379> lrem myColour 0 "red"

(integer) 2

127.0.0.1:6379> lrange myColour 0 -1

1) "pink"

2) "purple"

3) "yellow"

ltrim:保留指定key的值范围内的数据。即保留下标指定范围的field,其他的被删除。(用法:ltrim list链表名称 位置索引1 位置索引2) 保留位置索引1 到位置索引2的元素,其余全部删除。

127.0.0.1:6379> lrange myColour 0 -1

1) "yellow"

2) "purple"

3) "pink"

4) "red"

127.0.0.1:6379> ltrim myColour 2 -1

OK

127.0.0.1:6379> lrange myColour 0 -1

1) "pink"

2) "red"

lpop:从list的头部删除元素,并返回删除元素。(用法:lpop list链表名称)

127.0.0.1:6379> lrange myColour 0 -1

1) "pink"

2) "red"

127.0.0.1:6379> lpop myColour

"pink"

127.0.0.1:6379> lrange myColour 0 -1

1) "red"

rpoplpush:从第一个list的尾部移除元素添加到第二个list的头部。(用法:rpoplpush 第一个list 第二个list)

127.0.0.1:6379> lrange myColour 0 -1

1) "red"

2) "black"

3) "blue"

4) "orange"

127.0.0.1:6379> rpoplpush myColour myColour1

"orange"

127.0.0.1:6379> lrange myColour1 0 -1

1) "orange"

lindex:返回名称为key的list中index位置的元素,元素位置索引号从0开始。(用法:lindex list链表名称 元素索引号index)

127.0.0.1:6379> lrange myColour 0 -1

1) "red"

2) "black"

3) "blue"

127.0.0.1:6379> lindex myColour 0

"red"

127.0.0.1:6379> lindex myColour 1

"black"

llen:返回key对应list的长度,即list的元素个数。 (用法:llen list链表名称)

127.0.0.1:6379> lrange myColour 0 -1

1) "red"

2) "black"

3) "blue"

127.0.0.1:6379> llen myColour

(integer) 3

Redis学习第四课:Redis List类型及操作的更多相关文章

  1. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  2. redis学习(四)redis事务

    redis事务 1.redis事务介绍 redis的事务可以理解为一系列串行命令的集合.redis的事务和单条命令一样,都是redis的最小执行单位,因此一个事务内的命令,要么全部执行,要么全部不执行 ...

  3. 【Redis】Redis学习(四) Redis Sentinel模式详解

    主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生. Redis Sentinel是Redis官方提供的集群管理工具,主要有三大 ...

  4. redis学习(四)redis持久化之RDB、AOF

    redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失.为了解决这个问题,re ...

  5. Redis学习(四)redis发布订阅

    文章更新时间:2020/04/22 一.简介 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. ...

  6. redis 学习(4)-- 哈希类型

    redis 学习(4)-- 哈希类型 介绍 redis 中哈希键值结构: 可以看出:哈希键值包括 key,field,value 这三部分,即键,属性,值这三部分.可以这样来表示: key, (fie ...

  7. redis学习教程四《管理、备份、客户端连接》

    redis学习教程四<管理.备份.客户端连接>  一:Redis服务器命令 Redis服务器命令 下表列出了与Redis服务器相关的一些基本命令. 序号 命令 说明 1 BGREWRITE ...

  8. redis学习教程一《Redis的安装和配置》

    redis学习教程一<Redis的安装和配置> Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执 ...

  9. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...

随机推荐

  1. URL重写与URL路由

    要介绍这两个内容,必须要从ASP.NET管线说起. ASP.NET管线 管线(Pipeline)这个词形象地说明了每个Asp.net请求的处理过程: 请求是在一个管道中,要经过一系列的过程点,这些过程 ...

  2. 安装labelImage的问题qt

    不知为何需要些source ~/.bash_profile才 自己在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效.需要重新执行 : $source ~/.bash ...

  3. Spring AOP之使用注解创建切面

    上节中我们已经定义了Performance接口,他是切面中的切点的一个目标对象.那么现在就让我们使用AspectJ注解来定义切面吧. 1.定义切面 下面我们就来定义一场舞台剧中观众的切面类Audien ...

  4. 《A_Pancers》第一次作业:团队亮相

    一.团队及团队成员介绍 1> 队名:A_Pancers 2> 团队成员组成: 201571030310/龙正圆(小组长) 201571030329/杨环宇      20157103030 ...

  5. 《剑指offer》第三_二题(不修改数组找出重复的数字)

    // 面试题3(二):不修改数组找出重复的数字 // 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至 // 少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改 ...

  6. Python - configParser模块学习

    configParser 模块用于操作配置文件 注:Parser汉译为“解析”之意. 配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键= ...

  7. 推荐一款基于Angular实现的企业级中后台前端/设计解决方案脚手架

    ng-alain 是一个企业级中后台前端/设计解决方案脚手架,我们秉承 Ant Design 的设计价值观,目标也非常简单,希望在Angular上面开发企业后台更简单.更快速.随着『设计者』的不断反馈 ...

  8. vysor 破解 (插件 V1.7.8 客户端2.1.0)

    0.环境 mac os ===19年更新-客户端破解=== 换了个电脑,老的Chrome 插件各种问题,就换了客户端,然后就是一片模糊... 参考文档:https://www.sdbeta.com/w ...

  9. String字符串存入数据库中超出最大长度(oracle varchar2 4000)?应合理分条存储(java实现-工具/方法)

    问题描述 需要向数据库中保存数据,但某个字段内容长度过长(有中文.符号.英文),应该根据字符串内容与数据库存储上限合理设置储存方式. 解决思路 分条存储,即多条数据前n个字段一致,最后内容字段不同,下 ...

  10. 『Scrapy』爬取斗鱼主播头像

    分析目标 爬取的是斗鱼主播头像,示范使用的URL似乎是个移动接口(下文有提到),理由是网页主页属于动态页面,爬取难度陡升,当然爬取斗鱼主播头像这么恶趣味的事也不是我的兴趣...... 目标URL如下, ...