(Redis基础教程之六)如何使用Redis中的List
- 如何在ubuntu18.04上安装和保护redis
- 如何连接到Redis数据库
- 如何管理Redis数据库和Keys
- 如何在Redis中管理副本和客户端
- 如何在Redis中管理字符串
- 如何在Redis中管理list
- 如何在Redis中管理Hashes
- 如何在Redis中管理Sets
- 如何在Redis中管理Sorted Sets
- 如何在Redis中运行事务
- 如何使Redis中的Key失效
- 如何解决Redis中的问题
- 如何从命令行更改Redis的配置
- Redis数据类型简介
介绍
Redis是一个开源的内存中键值数据存储。在Redis中,列表是按插入顺序排序的字符串的集合,类似于链接列表。本教程介绍了如何在Redis列表中创建和使用元素。
如何使用本指南
本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。
本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.04上安装和保护Redis的步骤1进行操作。我们将通过使用Redis命令行界面运行它们来演示这些命令的行为。请注意,如果您使用其他Redis界面(例如Redli),则某些命令的确切输出可能会有所不同。redis-cli
另外,您可以提供一个托管的Redis数据库实例来测试这些命令,但是请注意,根据数据库提供者所允许的控制级别,本指南中的某些命令可能无法按所述方式工作。要配置DigitalOcean托管数据库,请遵循我们的托管数据库产品文档。然后,您必须 安装Redli 或 设置TLS隧道才能通过TLS连接到托管数据库。
Creating Lists
一个键只能容纳一个列表,尽管任何列表都可以容纳40亿个元素。Redis从左到右读取列表,您可以使用命令将新列表元素添加到列表的开头(“左”端),lpush
也可以使用尾部(“右”端)添加新元素rpush
。您还可以使用lpush
或rpush
创建新列表:
lpush key value
这两个命令都将输出一个整数,以显示列表中有多少个元素。为了说明,请运行以下命令以创建包含“我认为是我”的格言的列表:
lpush key_philosophy1 "therefore"
lpush key_philosophy1 "think"
rpush key_philosophy1 "I"
lpush key_philosophy1 "I"
rpush key_philosophy1 "am"
最后一条命令的输出将显示为:
(integer) 5
请注意,您可以使用单个lpush
或rpush
语句添加多个列表元素:
rpush key_philosophy1 "-" "Rene" "Decartes"
该lpushx
和rpushx
命令也用于元素添加到列表中,但如果给定的名单已经存在只会工作。如果任何一个命令失败,它将返回(integer) 0
:
rpushx key_philosophy2 "Happiness" "is" "the" "highest" "good" "–" "Aristotle"
(integer) 0
要更改列表中的现有元素,请运行lset
命令,然后输入键名,要更改的元素的索引和新值:
lset key_philosophy1 5 "sayeth"
如果尝试将列表元素添加到不包含列表的现有键中,则会导致数据类型冲突并返回错误。例如,以下set
命令创建一个保存字符串的键,因此以下尝试向其中添加列表元素的尝试lpush
将失败:
set key_philosophy3 "What is love?"
lpush key_philosophy3 "Baby don't hurt me"
(error) WRONGTYPE Operation against a key holding the wrong kind of value
无法将Redis密钥从一种数据类型转换为另一种数据类型,因此要变成key_philosophy3
列表,您需要删除该密钥并使用lpush
or rpush
命令重新开始。
从列表中检索元素(Retrieving Elements from a List)
要检索列表中的项目范围,请使用lrange
命令,后跟起始偏移量和终止偏移量。每个偏移量都是从零开始的索引,0
表示代表列表中的第一个元素,1
代表下一个,依此类推。
以下命令将从上一节创建的示例列表中返回所有元素:
lrange key_philosophy1 0 7
1) "I"
2) "think"
3) "therefore"
4) "I"
5) "am"
6) "sayeth"
7) "Rene"
8) "Decartes"
传递给的偏移量lrange
也可以为负数。在这种情况下使用时,-1
代表列表中的最后一个元素,-2
代表列表中的倒数第二个元素,依此类推。以下示例返回保存在列表中的最后三个元素key_philosophy1
:
lrange key_philosophy1 -3 -1
1) "I"
2) "am"
3) "sayeth"
要从列表中检索单个元素,可以使用lindex
命令。但是,此命令要求您提供元素的索引作为参数。与一样lrange
,索引是从零开始的,这意味着第一个元素在index 0
,第二个元素在index 1
,依此类推:
lindex key_philosophy1 4
"am"
要查找给定列表中有多少个元素,请使用以下llen
命令,该命令是“ l ist len gth”的缩写:
llen key_philosophy1
(integer) 8
如果存储在给定键上的值不存在,llen
将返回错误。
从列表中删除元素
该lrem
命令将删除与给定值匹配的已定义次数的第一个。要对此进行试验,请创建以下列表:
rpush key_Bond "Never" "Say" "Never" "Again" "You" "Only" "Live" "Twice" "Live" "and" "Let" "Die" "Tomorrow" "Never" "Dies"
以下lrem
示例将删除该值的第一次出现"Live"
:
lrem key_Bond 1 "Live"
此命令将输出从列表中删除的元素数量:
(integer) 1
传递给lrem
命令的数字也可以为负数。以下示例将删除该值的最后两个出现"Never"
:
lrem key_Bond -2 "Never"
(integer) 2
该lpop
命令从列表中删除并返回第一个或“最左边”的元素:
lpop key_Bond
"Never"
同样,要从列表中删除并返回最后或“最右边”的元素,请使用rpop
:
rpop key_Bond
"Dies"
Redis还包括rpoplpush
命令,该命令从列表中删除最后一个元素并将其推到另一个列表的开头:
rpoplpush key_Bond key_AfterToday
"Tomorrow"
如果传递给rpoplpush
命令的源键和目标键相同,则它将实质上旋转列表中的元素。
结论
本指南详细介绍了可用于在Redis中创建和管理列表的许多命令。如果您想在本指南中概述其他相关的命令,参数或过程,请在下面的评论中提出疑问或提出建议。
有关Redis命令的更多信息,请参阅关于如何管理Redis数据库的系列教程。
(Redis基础教程之六)如何使用Redis中的List的更多相关文章
- mongodb,Mysql,redis基础教程
数据库基础 1:mongodb基础教程 1:pymongo基础教程 2:Mysql基础教程 3:redis基础教程
- NewLife.Redis基础教程
X组件缓存架构以ICache接口为核心,包括MemoryCache.Redis和DbCache实现,支持FX和netstandard2.0!后续例程与使用说明均以Redis为例,各缓存实现类似. Re ...
- Redis入门教程(三)— Java中操作Redis
在Redis的官网上,我们可以看到Redis的Java客户端众多 其中,Jedis是Redis官方推荐,也是使用用户最多的Java客户端. 开始前的准备 使用jedis使用到的jedis-2.1.0. ...
- Redis基础教程
说明:本文中涉及的代码是c#所写,连接redis的第三方驱动为ServiceStack.Redis.连接redis的客户端软件为redis-desktop-manager. 一.Redis是什么 Re ...
- Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...
- (Python基础教程之十三)Python中使用httplib2 – HTTP GET和POST示例
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- JQuery基础教程:选择元素(中)
自定义选择符 JQuery在各种CSS选择符的基础上还添加了独有的完全不同的自定义选择符,注意,只要可能,jQuery就会使用浏览器原生的DOM选择符引擎去查找元素.但在使用自定义选择符的时候,就无法 ...
- Linux+Redis实战教程_day03_4、通用redis命令【重点】
4.通用redis命令[重点] Redis五种数据类型,String,hash,list,set,有序set l keys pattern:获取所有与pattern匹配的key,返回所有与该key匹配 ...
- C#的接口基础教程之六 接口转换
C#中不仅支持.Net 平台,而且支持COM平台.为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性.一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息.属性使 C# 能够支 ...
随机推荐
- XSS语义分析的阶段性总结(一)
本文作者:Kale 前言 由于X3Scan的研发已经有些进展了,所以对这一阶段的工作做一下总结!对于X3Scan的定位,我更加倾向于主动+被动的结合.主动的方面主要体现在可以主动抓取页面链接并发起请求 ...
- 【arithmetic】搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置 可以假设数组中无重复元素. 示例 1: 输入: [1,3,5,6], 5 输出: ...
- Java 多线程--ThreadLocal Timer ExecutorService
ThreadLocal /** * ThreadLocal:每个线程自身的存储本地.局部区域 * @author xzlf * */ public class ThreadLocalTest01 { ...
- <algorithm>中常用函数
先说一下STL操作的区间是 [a, b),左边是闭区间,右边是开区间,这是STL的特性,所以<algorithm>里面的函数操作的区间也都是 [a, b). 先声明一下, sort()函数 ...
- Linux - centos7.X安装tomcat8
创建tomcat安装路径 mkdir /usr/local/tomcat wget直接下载tomcat8 注意,需要已经安装了wget命令 wget http://mirrors.estointern ...
- 当git上只做文件大小写重命名的修改时,如何躲坑
一. 提交时 假设修改ABC.java为Abc.java. 1.1 如果使用git命令进行仅涉及大小写的重命名 1.1.1 设置git库为大小写敏感(不建议) $ git config core.ig ...
- 让Vagrant在Windwos下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题
此问题是在拥有相同配置的环境中,项目在win10跑的慢而在win7就正常的情况下发现的,一步步调试之后发现是文件操作的相关行为变的很慢,于是考虑到可能是系统问题,后来在如下链接找到了解决办法:http ...
- NGINX反向代理,后端服务器获取真实IP
一般使用中间件做一个反向代理后,后端的web服务器是无法获取到真实的IP地址. 但是生产上,这又是不允许的,那么怎么解决? 1.在NGINX反向代理服务器上进行修改 2.修改后端web服务器配置文件 ...
- DMTF 关于 CIM-XML 的幻灯片介绍
https://members.dmtf.org/data/presentations/devcon02/JimDavis-IntroductiontoCIM-XML.pdf
- Linux改中文乱码显示
Linux改中文乱码显示 可以使用locale命令,查看当前系统默认采用的字符集# locale在RedHat/CentOS系统下,记录系统默认使用语言的文件是/etc/ ...