Redis(九)list列表类型

简介: 列表的功能十分独特,他可以在一个键下面存储N个可以重复的元素。其实就是把string类型右边的值换成了多个元素组成的列表。

QQ图片20220425172700.jpg

列表的功能十分独特,他可以在一个键下面存储N个可以重复的元素。其实就是把string类型右边的值换成了多个元素组成的列表。


一:字符串结构:


由于列表的可重复性,下面的结构实例中,第一个元素和最后一个元素可以重复。


[
    "user":[
        "camellia1",
        "camellia2",
        "camellia3"
    ]
]


二:hash散列类型相关操作命令(PHP+linux)


1:Linux命令使用


(1):rpush向列表添加值之后,会返回当前的长度(包含元素个数)。(这里是右侧添加,左侧添加同理)


rpush list-key camellia1                     // 返回(integer) 1
rpush list-key camellia2                     // 返回(integer) 2
rpush list-key camellia3                     // 返回(integer) 3


(2):lrange 获取一定范围内的值,成功返回 范围内所有元素。这里的0代表起始位置,-1代表结束位置。从0到-1,代表取出所有的值。


lrange list-key 0 -1


输出:


1) "camellia1"
2) "camellia2"
3) "camellia3"


(3):lindex获取列表里面的 某个元素。


lindex list-key 1                   // 返回"camellia2"


(4):lpop列表左侧删除一个元素,成功返回 被删除的元素


hdel hash-key camellia1             // 返回(integer) 1


2:PHP使用:


(1):添加,成功返回自增主键(左右添加一致)


$r = $redis->rpush("list-key","camellia1"); // 从列表右侧添加一个值item
    var_dump($r);// 此时,列表中有一个元素,返回int 1
    $res = $redis->rpush("list-key","camellia2"); // 含有2个元素,返回int 2
    var_dump($res);


(2):我们获取全部的值


$result = $redis->lrange("list-key", 0 ,-1);
var_dump($result);  // 输出:array(2) { [0]=> string(9) "camellia1" [1]=> string(9) "camellia2" }


(3):获取键对应的值。


$result = $redis->lindex("list-key",1);
var_dump($result);              // 返回camellia2


(4):lpop从左侧删除一个元素,或者使用rpop从右侧删除一个元素,成功返回 被删除元素的值


r=r = r=redis->lpop("list-key"); var_dump($r);               // 返回被删除的值camellia1


三:基于redis列表list类型的简单队列实现


<?php
    $redis = new Redis();
    $redis->connect("127.0.0.1", 6379);
    // 进队列
    // 随机数一个id,模仿用户id
    $userId = mt_rand(000000, 999999);
    $redis->rpush("QUEUE_NAME",json_encode(["user_id" => $userId]));
    // 随机数一个id,模仿用户id
    $userId = mt_rand(000000, 999999);
    $redis->rpush("QUEUE_NAME",json_encode(["user_id" => $userId]));
    // 随机数一个id,模仿用户id
    $userId = mt_rand(000000, 999999);
    $redis->rpush("QUEUE_NAME",json_encode(["user_id" => $userId]));
    echo "数据进队列成功 
";
    echo "<br>";
    // 查看队列
    $res = $redis->lrange("QUEUE_NAME", 0, 1000);
    echo "当前队列数据为: 
";
    print_r($res);
    echo "----------------------------- 
";
    echo "<br>";
    // 出队列
    $redis->lpop("QUEUE_NAME");
    echo "数据出队列成功 
";
    echo "<br>";
    // 查看队列
    $res = $redis->lrange("QUEUE_NAME", 0, 1000);
    echo "当前队列数据为: 
";
    print_r($res);
?>


四:其他常用redis  List命令


序号


命令及描述


BLPOP   key1 [key2 ] timeout 
  移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。


BRPOP   key1 [key2 ] timeout 
  移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。


BRPOPLPUSH   source destination timeout 
  从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。


LINDEX   key index 
  通过索引获取列表中的元素


LINSERT   key BEFORE|AFTER pivot value 
  在列表的元素前或者后插入元素


LLEN   key 
  获取列表长度


LPOP   key 
  移出并获取列表的第一个元素


LPUSH   key value1 [value2] 
  将一个或多个值插入到列表头部


LPUSHX   key value 
  将一个值插入到已存在的列表头部


LRANGE   key start stop 
  获取列表指定范围内的元素


LREM   key count value 
  移除列表元素


LSET   key index value 
  通过索引设置列表元素的值


LTRIM   key start stop 
  对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。


RPOP   key 
  移除列表的最后一个元素,返回值为移除的元素。


RPOPLPUSH   source destination 
  移除列表的最后一个元素,并将该元素添加到另一个列表并返回


RPUSH   key value1 [value2] 
  在列表中添加一个或多个值


RPUSHX   key value 
  为已存在的列表添加值


以上基本上是我看的redis List列表类型的基本内容,有不足的地方,还请大佬指出。



目录
相关文章
|
6月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
12月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
843 1
Java 中数组Array和列表List的转换
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
449 14
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
327 9
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
1334 10
|
索引 Python
List(列表)
List(列表)。
245 4
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
JavaScript 数据管理 虚拟化
ArkTS List组件基础:掌握列表渲染与动态数据管理
在HarmonyOS应用开发中,ArkTS的List组件是构建动态列表视图的核心。本文深入探讨了List组件的基础,包括数据展示、性能优化和用户交互,以及如何在实际开发中应用这些知识,提升开发效率和应用性能。通过定义数据源、渲染列表项和动态数据管理,结合虚拟化列表和条件渲染等技术,帮助开发者构建高效、响应式的用户界面。
1123 2
|
存储 NoSQL Java
Redis命令:列表模糊删除详解
通过本文的介绍,我们详细探讨了如何在Redis中实现列表的模糊删除。虽然Redis没有直接提供模糊删除命令,但可以通过组合使用 `LRANGE`和 `LREM`命令,并在客户端代码中进行模糊匹配,来实现这一功能。希望本文能帮助你在实际应用中更有效地操作Redis列表。
498 0
|
存储 NoSQL 关系型数据库
Redis的ZSet底层数据结构,ZSet类型全面解析
Redis的ZSet底层数据结构,ZSet类型全面解析;应用场景、底层结构、常用命令;压缩列表ZipList、跳表SkipList;B+树与跳表对比,MySQL为什么使用B+树;ZSet为什么用跳表,而不是B+树、红黑树、二叉树

热门文章

最新文章