Redis学习第四课:Redis List类型及操作
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类型及操作的更多相关文章
- 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- redis学习(四)redis事务
redis事务 1.redis事务介绍 redis的事务可以理解为一系列串行命令的集合.redis的事务和单条命令一样,都是redis的最小执行单位,因此一个事务内的命令,要么全部执行,要么全部不执行 ...
- 【Redis】Redis学习(四) Redis Sentinel模式详解
主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生. Redis Sentinel是Redis官方提供的集群管理工具,主要有三大 ...
- redis学习(四)redis持久化之RDB、AOF
redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失.为了解决这个问题,re ...
- Redis学习(四)redis发布订阅
文章更新时间:2020/04/22 一.简介 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. ...
- redis 学习(4)-- 哈希类型
redis 学习(4)-- 哈希类型 介绍 redis 中哈希键值结构: 可以看出:哈希键值包括 key,field,value 这三部分,即键,属性,值这三部分.可以这样来表示: key, (fie ...
- redis学习教程四《管理、备份、客户端连接》
redis学习教程四<管理.备份.客户端连接> 一:Redis服务器命令 Redis服务器命令 下表列出了与Redis服务器相关的一些基本命令. 序号 命令 说明 1 BGREWRITE ...
- redis学习教程一《Redis的安装和配置》
redis学习教程一<Redis的安装和配置> Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执 ...
- C# Redis学习系列三:Redis配置主从
Redis配置主从 主IP :端口 192.168.0.103 6666 从IP:端口 192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...
随机推荐
- js 中面向对象的多态
什么是多态: 实际上是不同对象作用与同一操作产生不同的效果.多态的思想实际上是把“想做什么”和“谁去做“分开,多态的好处是什么呢?为什么要多态?我们来看看 Martin Fowler 在<重构: ...
- 浏览器滚动条及其影响 calc()
1.浏览器滚动条 默认风格各异,推荐一插件 mCustomScrollbar 不考虑兼容也可自定义样式 链接二 2.影响 以垂直方向为例,当内容变化的时候,如果设置的是overflow:aut ...
- Android 上传大文件
最近工作需要实现使用 Android 手机上传图片的功能, 参考了网络上的很多资料, 不过网络上的代码都仅仅适合上传较小的文件, 当上传较大文件时(我在自己的测试机器上发现是 2M 左右), 就会因为 ...
- Myeclipse2016安装Aptana
Myeclipse2016安装Aptana 想装个Aptana,装了半天,网上说的什么links方式啊,在线方式啊,都是什么的浮云. 所以自己来写个安装教程. 一.Aptana简要介绍 Aptana有 ...
- 84. Largest Rectangle in Histogram *HARD* -- 柱状图求最大面积 85. Maximal Rectangle *HARD* -- 求01矩阵中的最大矩形
1. Given n non-negative integers representing the histogram's bar height where the width of each bar ...
- consumer发送请求,接收响应
一般情况,consumer发送请求时,创建一个DefaultFuture对象,然后阻塞并等待响应.DefaultFuture类,封装了请求和响应: // 省略其他代码 public class Def ...
- spring boot 学习(六)spring boot 各版本中使用 log4j2 记录日志
spring boot 各版本中使用 log4j2 记录日志 前言 Spring Boot中默认日志工具是 logback,只不过我不太喜欢 logback.为了更好支持 spring boot 框架 ...
- kill prefix meta,milli,kilo input
1● meta 超过,改变 2● milli 1/1000 3● kilo 1000
- cas Cas20ProxyReceivingTicketValidationFilter
Cas20ProxyReceivingTicketValidationFilter 继承AbstractTicketValidationFilter,这里有几个模板方法.例如getTicketVal ...
- log4j 将日志文件输出到web-inf下的解决办法
参考链接:http://blog.csdn.net/chenfengdejuanlian/article/details/70738995 只需要配置好即可,用的时候直接在代码中获得记录器记录,监听器 ...