1. 如何在ubuntu18.04上安装和保护redis
  2. 如何连接到Redis数据库
  3. 如何管理Redis数据库和Keys
  4. 如何在Redis中管理副本和客户端
  5. 如何在Redis中管理字符串
  6. 如何在Redis中管理list
  7. 如何在Redis中管理Hashes
  8. 如何在Redis中管理Sets
  9. 如何在Redis中管理Sorted Sets
  10. 如何在Redis中运行事务
  11. 如何使Redis中的Key失效
  12. 如何解决Redis中的问题
  13. 如何从命令行更改Redis的配置
  14. 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。您还可以使用lpushrpush创建新列表:

  1. lpush key value

这两个命令都将输出一个整数,以显示列表中有多少个元素。为了说明,请运行以下命令以创建包含“我认为是我”的​​格言的列表:

  1. lpush key_philosophy1 "therefore"
  2. lpush key_philosophy1 "think"
  3. rpush key_philosophy1 "I"
  4. lpush key_philosophy1 "I"
  5. rpush key_philosophy1 "am"

最后一条命令的输出将显示为:

  1. (integer) 5

请注意,您可以使用单个lpushrpush语句添加多个列表元素:

  1. rpush key_philosophy1 "-" "Rene" "Decartes"

lpushxrpushx命令也用于元素添加到列表中,但如果给定的名单已经存在只会工作。如果任何一个命令失败,它将返回(integer) 0

  1. rpushx key_philosophy2 "Happiness" "is" "the" "highest" "good" "–" "Aristotle"
  2. (integer) 0

要更改列表中的现有元素,请运行lset命令,然后输入键名,要更改的元素的索引和新值:

  1. lset key_philosophy1 5 "sayeth"

如果尝试将列表元素添加到不包含列表的现有键中,则会导致数据类型冲突并返回错误。例如,以下set命令创建一个保存字符串的键,因此以下尝试向其中添加列表元素的尝试lpush将失败:

  1. set key_philosophy3 "What is love?"
  2. lpush key_philosophy3 "Baby don't hurt me"
  3. (error) WRONGTYPE Operation against a key holding the wrong kind of value

无法将Redis密钥从一种数据类型转换为另一种数据类型,因此要变成key_philosophy3列表,您需要删除该密钥并使用lpushor rpush命令重新开始。

从列表中检索元素(Retrieving Elements from a List)

要检索列表中的项目范围,请使用lrange命令,后跟起始偏移量和终止偏移量。每个偏移量都是从零开始的索引,0表示代表列表中的第一个元素,1代表下一个,依此类推。

以下命令将从上一节创建的示例列表中返回所有元素:

  1. lrange key_philosophy1 0 7
  2. 1) "I"
  3. 2) "think"
  4. 3) "therefore"
  5. 4) "I"
  6. 5) "am"
  7. 6) "sayeth"
  8. 7) "Rene"
  9. 8) "Decartes"

传递给的偏移量lrange也可以为负数。在这种情况下使用时,-1代表列表中的最后一个元素,-2代表列表中的倒数第二个元素,依此类推。以下示例返回保存在列表中的最后三个元素key_philosophy1

  1. lrange key_philosophy1 -3 -1
  2. 1) "I"
  3. 2) "am"
  4. 3) "sayeth"

要从列表中检索单个元素,可以使用lindex命令。但是,此命令要求您提供元素的索引作为参数。与一样lrange,索引是从零开始的,这意味着第一个元素在index 0,第二个元素在index 1,依此类推:

  1. lindex key_philosophy1 4
  2. "am"

要查找给定列表中有多少个元素,请使用以下llen命令,该命令是“ l ist len gth”的缩写:

  1. llen key_philosophy1
  2. (integer) 8

如果存储在给定键上的值不存在,llen将返回错误。

从列表中删除元素

lrem命令将删除与给定值匹配的已定义次数的第一个。要对此进行试验,请创建以下列表:

  1. rpush key_Bond "Never" "Say" "Never" "Again" "You" "Only" "Live" "Twice" "Live" "and" "Let" "Die" "Tomorrow" "Never" "Dies"

以下lrem示例将删除该值的第一次出现"Live"

  1. lrem key_Bond 1 "Live"

此命令将输出从列表中删除的元素数量:

  1. (integer) 1

传递给lrem命令的数字也可以为负数。以下示例将删除该值的最后两个出现"Never"

  1. lrem key_Bond -2 "Never"
  2. (integer) 2

lpop命令从列表中删除并返回第一个或“最左边”的元素:

  1. lpop key_Bond
  2. "Never"

同样,要从列表中删除并返回最后或“最右边”的元素,请使用rpop

  1. rpop key_Bond
  2. "Dies"

Redis还包括rpoplpush命令,该命令从列表中删除最后一个元素并将其推到另一个列表的开头:

  1. rpoplpush key_Bond key_AfterToday
  2. "Tomorrow"

如果传递给rpoplpush命令的源键和目标键相同,则它将实质上旋转列表中的元素。

结论

本指南详细介绍了可用于在Redis中创建和管理列表的许多命令。如果您想在本指南中概述其他相关的命令,参数或过程,请在下面的评论中提出疑问或提出建议。

有关Redis命令的更多信息,请参阅关于如何管理Redis数据库的系列教程。

(Redis基础教程之六)如何使用Redis中的List的更多相关文章

  1. mongodb,Mysql,redis基础教程

    数据库基础 1:mongodb基础教程 1:pymongo基础教程  2:Mysql基础教程 3:redis基础教程

  2. NewLife.Redis基础教程

    X组件缓存架构以ICache接口为核心,包括MemoryCache.Redis和DbCache实现,支持FX和netstandard2.0!后续例程与使用说明均以Redis为例,各缓存实现类似. Re ...

  3. Redis入门教程(三)— Java中操作Redis

    在Redis的官网上,我们可以看到Redis的Java客户端众多 其中,Jedis是Redis官方推荐,也是使用用户最多的Java客户端. 开始前的准备 使用jedis使用到的jedis-2.1.0. ...

  4. Redis基础教程

    说明:本文中涉及的代码是c#所写,连接redis的第三方驱动为ServiceStack.Redis.连接redis的客户端软件为redis-desktop-manager. 一.Redis是什么 Re ...

  5. Spring Boot 2.x基础教程:找回启动日志中的请求路径列表

    如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...

  6. (Python基础教程之十三)Python中使用httplib2 – HTTP GET和POST示例

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  7. JQuery基础教程:选择元素(中)

    自定义选择符 JQuery在各种CSS选择符的基础上还添加了独有的完全不同的自定义选择符,注意,只要可能,jQuery就会使用浏览器原生的DOM选择符引擎去查找元素.但在使用自定义选择符的时候,就无法 ...

  8. Linux+Redis实战教程_day03_4、通用redis命令【重点】

    4.通用redis命令[重点] Redis五种数据类型,String,hash,list,set,有序set l keys pattern:获取所有与pattern匹配的key,返回所有与该key匹配 ...

  9. C#的接口基础教程之六 接口转换

    C#中不仅支持.Net 平台,而且支持COM平台.为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性.一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息.属性使 C# 能够支 ...

随机推荐

  1. EF-三种映射

    更改实体的类名称,字段名称,来映射表名称,表字段.  1,用EF自带的特性方式: 直接加上特性,更新对应的类名,字段名以及引用类,字段名的相关地方  2,参考NHibernate建立一个EF自带的映射 ...

  2. 微信小程序填坑---小程序支付

    因为公司刚刚重新做了网站,所以也吧公众号和小程序提上了日程,在公众号里面没有什么问题,直接按照官方文档进行代码编写.调试,然后就解决了公众号内支付的问题. 因为小程序提供了<webview> ...

  3. 高级数据结构---赫(哈)夫曼树及java代码实现

    我们经常会用到文件压缩,压缩之后文件会变小,便于传输,使用的时候又将其解压出来.为什么压缩之后会变小,而且压缩和解压也不会出错.赫夫曼编码和赫夫曼树了解一下. 赫夫曼树: 它是一种的叶子结点带有权重的 ...

  4. 5、flink常见函数使用及自定义转换函数

    代码地址:https://gitee.com/nltxwz_xxd/abc_bigdata 一.flink编程方法 获取执行环境(execution environment) 加载/创建初始数据集 对 ...

  5. 详解 Discuz 的 PHP经典加密解密函数 authcode

    函数注释: // $string: 明文 或 密文 // $operation:DECODE表示解密,其它表示加密 // $key: 密匙 // $expiry:密文有效期 function auth ...

  6. memcache雪崩

    缓存雪崩一般是由某个缓存节点失效,导致其他节点的缓存命中率下降, 缓存中缺失的数据(memcache经典场景,当有一个客户端的服务请求过来的时候,首先去查memcache,memcache里面是否缓存 ...

  7. QT QLabel内容太长时候使用省略号

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xiezhongyuan07/articl ...

  8. 反向代理负载均衡之nginx

    一.集群 1.1 什么是集群 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性 ...

  9. 2016年全球IC设计大厂营收排名:高通稳居龙头

    TrendForce旗下拓墣产业研究所最新研究统计,2016年全球前十大无晶圆IC设计业者营收中,高通(QCT)仍然稳居龙头宝座.而前三大业者高通.新博通(Broadcom)与联发科合计营收占前十名营 ...

  10. 数学--数论--HDU1576 A / B(逆元)

    问题描述 要求(A / B)%9973,但由于A很大,我们只被告知n(n = A%9973)(我们给定的A必能被B整除,且gcd(B,9973)= 1). 输入项 数据的第一行是一个T,表示有T组数据 ...