美文网首页
Redis学习笔记-05List列表

Redis学习笔记-05List列表

作者: 惊天动地猪儿虫 | 来源:发表于2020-12-27 12:45 被阅读0次

List列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获得列表的某一个片段。
其内部使用的是双向链表来实现的,向两端添加元素的时间复杂度为O(1)。

使用Java的代码实现的伪代码为:

        Deque<String> articles = new LinkedList<String>();
        articles.addLast("article2");
        articles.addLast("article3");
        articles.addFirst("article1");

使用Redis的实现为:

127.0.0.1:6379> rpush articles article2
(integer) 1
127.0.0.1:6379> rpush articles article3
(integer) 2
127.0.0.1:6379> lpush articles article1
(integer) 3
127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article2"
3) "article3"
127.0.0.1:6379> 

1 命令操作

API方法名 作用
lpush 在key对应list的头部添加字符串元素
rpush 在key对应list的尾部添加字符串元素
linsert 在key对应list特定位置前或后添加字符串
lset 设置list中指定下标的元素值
lrem 从key对应list中删除n个和value相同的元素(n<0 从尾删除,n=0 全部删除)
ltrim 保留指定key的值范围内的数据
lpop 从list头部删除元素,并返回删除元素
rpop 从list尾部删除元素,并返回删除元素
rpoplpush 从第一个list的尾部移除元素并添加到底二个list的头部
lindex 返回名称为key的list中index位置的元素
llen 返回key对应list的长度

1.1 lpush和rpush

lpush key value [value...]
rpush key value [value...]
向列表两端增加元素

127.0.0.1:6379> rpush articles article2
(integer) 1
127.0.0.1:6379> rpush articles article3
(integer) 2
127.0.0.1:6379> lpush articles article1
(integer) 3
127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article2"
3) "article3"
127.0.0.1:6379>

1.2 lpop和rpop

lpop key
rpop key
从列表两端弹出元素

127.0.0.1:6379> lpop articles
"article1"
127.0.0.1:6379> rpop articles
"article3"
127.0.0.1:6379> lrange articles 0 2
1) "article2"
127.0.0.1:6379> 

1.3 llen

llen key
获取列表中元素的个数

127.0.0.1:6379> llen articles
(integer) 1
127.0.0.1:6379> 

1.4 lrange

lrange key start stop
获取列表片段

127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article2"
3) "article3"
127.0.0.1:6379> 

lrange命令也支持负索引,表示从右边开始计算序数

127.0.0.1:6379> lrange articles -2 -1
1) "article2"
2) "article3"
127.0.0.1:6379> lrange articles -3 -1
1) "article1"
2) "article2"
3) "article3"
127.0.0.1:6379> 

1.5 lrem

lrem key count value
删除列表中前count个值为value的元素,返回值是实际删除的元素个数。根据count值得不同,lrem执行会有部分不同。

  • 当count > 0时,会从列表左边开始删除前count个值为value的元素。
  • 当count < 0时,会从列表右边开始删除前count个值为value的元素。
  • 当count = 0时,会从列表删除所有值为value的元素。
127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article2"
3) "article3"
127.0.0.1:6379> lrem articles  1 article2
(integer) 1
127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article3"
127.0.0.1:6379> 

1.6 lindex和lset

lindex key index
lset key index value
获得/设置指定索引的元素值

127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article3"
127.0.0.1:6379> lindex articles 1
"article3"
127.0.0.1:6379> lset articles 2 article4
(error) ERR index out of range
127.0.0.1:6379> lset articles 1 article4
OK
127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article4"
127.0.0.1:6379> 

1.7 ltrim

ltrim key start end
只保留列表指定片段,即删除指定索引范围之外的所有元素。与lrange不同的是,lrange不删除元素。

127.0.0.1:6379> lrange articles 0 2
1) "article1"
2) "article4"
127.0.0.1:6379> ltrim articles 1 1
OK
127.0.0.1:6379> lrange articles 0 2
1) "article4"
127.0.0.1:6379> 

1.8 linsert

linsert key before|after pivot value
首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是before还是after来决定value插入该元素的前面还是后面。

127.0.0.1:6379> lrange articles 0 2
1) "article4"
127.0.0.1:6379> 
127.0.0.1:6379> linsert articles before article4 article3
(integer) 2
127.0.0.1:6379> lrange articles 0 2
1) "article3"
2) "article4"
127.0.0.1:6379> 

1.9 rpop

rpoplpush source destination
将元素从一个列表转到另一个列表。先执行rpop命令在执行lpush命令。rpoplpush会先从source列表类型建的右端弹出一个元素,然后将其加入到destination列表类型键的左边,并返回这个元素的值,整个过程都是原子性的。

127.0.0.1:6379> rpoplpush articles articles1
"article4"
127.0.0.1:6379> lrange articles 0 2
1) "article3"
127.0.0.1:6379> lrange articles1 0 2
1) "article4"
127.0.0.1:6379> 

相关文章

  • Redis学习笔记-05List列表

    List列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获得列表的某一个片段。其内部使用的...

  • Redis学习笔记【06】 - 列表

    一、简介 列表(list)类型是用来存储多个有序的字符串,如图2-18所示,a、b、c、d、e一个元素从左到右组成...

  • redis学习笔记详细列表

    1.当键为字符串类型的时候,如果该键值对设置了过期时间,此时再对该键进行set操作,那么将会覆盖已有的键值对,并且...

  • 【Redis】Redis学习笔记(五)jedis(JedisCl

    redis系列文章目录 redis学习笔记(一)redis3.2.5集群安装与测试 redis学习笔记(二)Jed...

  • Redis学习笔记:事务

    Redis学习笔记:事务 原文链接:Redis学习笔记:事务 一、事务的描述 和MySQL一样,Redis中也有事...

  • Redis 参数

    Redis Redis 学习笔记 II 常见参数配置

  • Redis学习笔记(五) 压缩列表

    压缩列表是列表键与哈希键的底层实现之一。当一个列表键只包含少量的列表项,并且每个列表项要么就是小整数值,要么就是长...

  • 2018-11-12

    Redis学习笔记 Redis在在线测试 Redis官网 REmote DIctionary Server(Red...

  • 【Redis学习笔记】05 Redis 列表类型基本操作

    1. 列表类型常用命令 命令含义用法LPUSH在开头插入数据LPUSH key valueRPUSH在结尾插入数据...

  • Redis 初识

    初识 Redis 《 Redis 开发与运维》的学习笔记,希望大家多多指导。 什么是 Redis Redis 的全...

网友评论

      本文标题:Redis学习笔记-05List列表

      本文链接:https://www.haomeiwen.com/subject/ztegnktx.html