美文网首页
Redis5数据类型2-List

Redis5数据类型2-List

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2022-03-16 11:37 被阅读0次

1. List简介

Redis中List是基于Linked List实现,双向无环链表,其中元素是字符串类型。特点:

  • 列表头尾增删快,中间增删慢,增删元素是常态
  • 元素可以重复出现
  • 最多包含232-1元素
    双向链表添加删除元素示意图:
    增.png
    删.png
    同时List还具有索引,索引顺序:
  • 从左至右,从0开始
  • 从右至左,从-1开始


    索引.png

2. List指令

2.1 增加元素

  • 从左边增加
    lpush key value [value ...]
127.0.0.1:6379> lpush fruits apple
1
127.0.0.1:6379> lpush fruits pear banana
3
127.0.0.1:6379>
  • 从右边添加
    rpush key value [value ...]
127.0.0.1:6379> rpush fruits orange
4
127.0.0.1:6379>

2.2 查看元素

lrange key start stop
命令返回start、stop索引之间的所有元素(包含两端的元素),索引从0开始。索引可以是负数,如:-1代表最后边的一个元素。

127.0.0.1:6379> lrange fruits 0 -1
banana
pear
apple
orange 
127.0.0.1:6379>

2.3 获取列表中元素的个数

llen key

127.0.0.1:6379> llen fruits
4
127.0.0.1:6379>

2.4 取出元素

  • 从左边取出元素,并返回
    lpop key
  • 从右边取出元素,并返回
    rpop key
127.0.0.1:6379> lpop fruits
banana
127.0.0.1:6379> rpop fruits
orange
127.0.0.1:6379>

2.5 元素从一个列表转移到另一个列表中

rpoplpush source dest

127.0.0.1:6379> lpush fruits banana
3
127.0.0.1:6379> rpush fruits orange
4
127.0.0.1:6379> lrange fruits 0 -1
banana
pear
apple
orange
127.0.0.1:6379> rpoplpush fruits list1
orange
127.0.0.1:6379> lrange list1 0 -1
orange
127.0.0.1:6379> lrange fruits 0 -1
banana
pear
apple
127.0.0.1:6379>

2.6 获取、设定指定位置的元素

  • 获取
    lindex key index
  • 设定
    lset key index value
127.0.0.1:6379> lrange fruits 0 -1
banana
pear
apple
banana
127.0.0.1:6379> lindex fruits 1
pear
127.0.0.1:6379> lset fruits 2 apples
OK
127.0.0.1:6379> lrange fruits 0 -1
banana
pear
apples
banana
127.0.0.1:6379>

2.7 删除List中指定元素

lrem key count value
从列表头部开始删除值等于value的元素count次

  • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count
  • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值
  • count = 0 : 移除表中所有与 value 相等的值
127.0.0.1:6379> lpush list2 a b c c b a a b c c b a a a a
15
127.0.0.1:6379> lrem list2 1 a
1
127.0.0.1:6379> lrange list2 0 -1
a
a
a
b
c
c
b
a
a
b
c
c
b
a
127.0.0.1:6379> lrem list2 3 a
3
127.0.0.1:6379> lrange list2 0 -1
b
c
c
b
a
a
b
c
c
b
a
127.0.0.1:6379> lrem list2 0 a
3
127.0.0.1:6379> lrange list2 0 -1
b
c
c
b
b
c
c
b
127.0.0.1:6379>

2.8 去除指定范围外的元素

ltrim key start stop

127.0.0.1:6379> lpush list3 0 1 2 3 4 5 6 7 8 9
10
127.0.0.1:6379> lrange list3 0 -1
9
8
7
6
5
4
3
2
1
0
127.0.0.1:6379> ltrim list3 0 4
OK
127.0.0.1:6379> lrange list3 0 -1
9
8
7
6
5
127.0.0.1:6379>

2.9 向列表中插入元素

linsert key before|after pivot value
在列表中从左到右查找值为pivot的元素,然后根据BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。

127.0.0.1:6379> lpush list4 1 2 4 5
4
127.0.0.1:6379> lrange list4 0 -1
5
4
2
1
127.0.0.1:6379> linsert list4 before 2 3
5
127.0.0.1:6379> lrange list4 0 -1
5
4
3
2
1
127.0.0.1:6379>

2.10 阻塞

blpop key [key ...] timeout
brpop key [key ...] timeout
阻塞情况:

  • 如果弹出的列表不存在或者为空,就会阻塞
  • 超时时间设置为0,就是永久阻塞,直到有数据可以弹出
  • 如果多个客户端阻塞在同一个列表上,使用First In First Service原则,先到先服务,即只有1个客户端会接收成功

相关文章

  • Redis5数据类型2-List

    1. List简介 Redis中List是基于Linked List实现,双向无环链表,其中元素是字符串类型。特点...

  • Redis(二)-基本数据类型

    概述 本节主要分析Redis5大数据类型(对应上一节分析的RedisObject中Type属性:String/Li...

  • Redis5数据类型1-String

    上次说到Redis5提供六种数据类型来存储值:string字符串类型、hash散列类型、list列表类型、set集...

  • Redis Stream类型的使用

    一、背景 最近在看redis这方面的知识,发现在redis5中产生了一种新的数据类型Stream,它和kafka的...

  • Redis5数据类型3-Hash

    1. Hash散列 是指Redis中存储的value值是Hash散列类型的。而Hash也有自己的数据结构: 它是由...

  • Redis5数据类型6-Stream

    1. Stream 类型介绍 Stream是Redis5.0 引入的一个新的数据类型,官方把它定义为:以更抽象的方...

  • Redis5数据类型5-SortedSet集合

    1. SortedSet集合介绍 SortedSet集合与Set集合类似,有以下特点: 数据是有序的,无重复的 每...

  • Redis5数据类型4-Set集合

    1. Set集合介绍 Set数据有几个特点: 无序的、去重的 元素是字符串类型 最多包含232-1个元素 2. S...

  • mac和centos7 安装redis5

    mac 安装redis5 安装 修改redis密码, 查找requirepass 启动redis centos7 ...

  • centos7安装redis5

    1. 下载redis5最新版:下载地址[http://download.redis.io/releases/] 2...

网友评论

      本文标题:Redis5数据类型2-List

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