redis list类型命令的实现

 更新时间:2023年07月20日 15:10:53   作者:不想睡觉的橘子君  
本文主要介绍了redis list类型命令的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

redis的list类型,可以存储双向链表作为value,key保留有head和tail指针可以指向双向链表的头和尾,因此可以直接从头或尾对list进行操作。
全部命令如下:

127.0.0.1:6379> help @list
  BLMOVE source destination LEFT|RIGHT LEFT|RIGHT timeout
  summary: Pop an element from a list, push it to another list and return it; or block until one is available
  since: 6.2.0
  BLMPOP timeout numkeys key [key ...] LEFT|RIGHT [COUNT count]
  summary: Pop elements from a list, or block until one is available
  since: 7.0.0
  BLPOP key [key ...] timeout
  summary: Remove and get the first element in a list, or block until one is available
  since: 2.0.0
  BRPOP key [key ...] timeout
  summary: Remove and get the last element in a list, or block until one is available
  since: 2.0.0
  BRPOPLPUSH source destination timeout
  summary: Pop an element from a list, push it to another list and return it; or block until one is available
  since: 2.2.0
  LINDEX key index
  summary: Get an element from a list by its index
  since: 1.0.0
  LINSERT key BEFORE|AFTER pivot element
  summary: Insert an element before or after another element in a list
  since: 2.2.0
  LLEN key
  summary: Get the length of a list
  since: 1.0.0
  LMOVE source destination LEFT|RIGHT LEFT|RIGHT
  summary: Pop an element from a list, push it to another list and return it
  since: 6.2.0
  LMPOP numkeys key [key ...] LEFT|RIGHT [COUNT count]
  summary: Pop elements from a list
  since: 7.0.0
  LPOP key [count]
  summary: Remove and get the first elements in a list
  since: 1.0.0
  LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
  summary: Return the index of matching elements on a list
  since: 6.0.6
  LPUSH key element [element ...]
  summary: Prepend one or multiple elements to a list
  since: 1.0.0
  LPUSHX key element [element ...]
  summary: Prepend an element to a list, only if the list exists
  since: 2.2.0
  LRANGE key start stop
  summary: Get a range of elements from a list
  since: 1.0.0
  LREM key count element
  summary: Remove elements from a list
  since: 1.0.0
  LSET key index element
  summary: Set the value of an element in a list by its index
  since: 1.0.0
  LTRIM key start stop
  summary: Trim a list to the specified range
  since: 1.0.0
  RPOP key [count]
  summary: Remove and get the last elements in a list
  since: 1.0.0
  RPOPLPUSH source destination
  summary: Remove the last element in a list, prepend it to another list and return it
  since: 1.2.0
  RPUSH key element [element ...]
  summary: Append one or multiple elements to a list
  since: 1.0.0
  RPUSHX key element [element ...]
  summary: Append an element to a list, only if the list exists
  since: 2.2.0

下面示例如下:

  • lpush:lpush key e1 e2 e3…将数据从头那里推入list
  • lpop:lpop key,将数据从head弹出

这样2个同向的命令组合起来,可以实现一个队列。

反向的命令组合起来,可以实现一个栈。

127.0.0.1:6379> lpush k1 a b c d e
(integer) 5
127.0.0.1:6379> lpop k1
"e"
127.0.0.1:6379> lpop k1
"d"

lrange :lrange key start end,展示key对应的从下标start到end的所有数据

127.0.0.1:6379> lrange k1 0 -1
1) "c"
2) "b"
3) "a"

lindex:lindex key index ,返回key对应的List指定index位置的值

127.0.0.1:6379> lrange k1 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> lindex k1 1
"e"

lset:lset key index value,在key对应的list中的指定下标处替换为value

127.0.0.1:6379> lset k1 3 x
OK
127.0.0.1:6379> lrange k1 0 -1
1) "f"
2) "e"
3) "d"
4) "x"
5) "b"
6) "a"

lrem:lrem key num target,删除key对应的list中的target元素,如果num大于0,从head开始删num个。如果num小于0,从tail开始删abs(num)个

127.0.0.1:6379> lrange k3 0 -1
 1) "d"
 2) "6"
 3) "a"
 4) "5"
 5) "c"
 6) "4"
 7) "a"
 8) "3"
 9) "b"
10) "2"
11) "a"
12) "1"
127.0.0.1:6379> lrem k3 2 a
(integer) 2
127.0.0.1:6379> lrange k3 0 -1
 1) "d"
 2) "6"
 3) "5"
 4) "c"
 5) "4"
 6) "3"
 7) "b"
 8) "2"
 9) "a"
10) "1"

linsert:linsert key before/after element value,在key对应的list中,在元素element(不是下标)之前或者之后,添加value

127.0.0.1:6379> lrange k3 0 -1
 1) "d"
 2) "6"
 3) "5"
 4) "c"
 5) "4"
 6) "3"
 7) "b"
 8) "2"
 9) "a"
10) "1"
127.0.0.1:6379> linsert k3 after 6 a
(integer) 11
127.0.0.1:6379> lrange k3 0 -1
 1) "d"
 2) "6"
 3) "a"
 4) "5"
 5) "c"
 6) "4"
 7) "3"
 8) "b"
 9) "2"
10) "a"
11) "1"

llen:llen key,返回长度
redis的List类型有很多关于下标的操作,也可以将其抽象为一个数组来使用。

127.0.0.1:6379> llen k3
(integer) 10

blpop:blpop key time,弹出指定key对应的list中的一个元素,如果list没有元素或者不存在key对应的这个list,则阻塞等待time指定的时间,0表示一直等待,单位是s。

127.0.0.1:6379> blpop k1 0

阻塞期间如果list有了元素,则会中断阻塞并弹出

127.0.0.1:6379> blpop k1 0
1) "k1"
2) "a"
(35.77s)

ltrim:ltrim key start end,删除key对应的list start和end之外的两端的元素

127.0.0.1:6379> lrange k4 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> ltrim k4 1 -2
OK
127.0.0.1:6379> lrange k4 0 -1
1) "e"
2) "d"
3) "c"
4) "b"

到此这篇关于redis list类型命令的实现的文章就介绍到这了,更多相关redis list类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • redis 交集、并集、差集的具体使用

    redis 交集、并集、差集的具体使用

    这篇文章主要介绍了redis 交集、并集、差集的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Redis集群扩容的实现示例

    Redis集群扩容的实现示例

    本文介绍了在虚拟机上新建Redis集群,并将新增节点加入现有集群,通过配置文件和`redis-cli`命令,成功实现了Redis集群的扩容,感兴趣的可以了解一下
    2025-02-02
  • 从MySQL到Redis的简单数据库迁移方法

    从MySQL到Redis的简单数据库迁移方法

    这篇文章主要介绍了从MySQL到Redis的简单数据库迁移方法,注意Redis数据库基于内存,并不能代替传统数据库,需要的朋友可以参考下
    2015-06-06
  • Redis过期键删除策略解读

    Redis过期键删除策略解读

    Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,保证数据库干净但可能影响性能,Redis默认同时使用两种策略
    2025-01-01
  • Redis设置密码保护的实例讲解

    Redis设置密码保护的实例讲解

    今天小编就为大家分享一篇Redis设置密码保护的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 关于redis Key淘汰策略的实现方法

    关于redis Key淘汰策略的实现方法

    下面小编就为大家带来一篇关于redis Key淘汰策略的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • spring boot集成redis基础入门实例详解

    spring boot集成redis基础入门实例详解

    redis在spring boot项目开发中是常用的缓存套件,常见使用的是spring-boot-starter-data-redis,这篇文章主要介绍了spring boot集成redis基础入门,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • Redis AOF文件损坏报错的完整修复方案

    Redis AOF文件损坏报错的完整修复方案

    文章提供了三种修复Redis AOF持久化文件损坏的方法,方法一:备份损坏文件,使用官方工具修复;方法二:修改配置让Redis忽略损坏的文件尾部;方法三:如果是Redis且混合AOF格式,使用相同修复命令,每种方法都有详细步骤,确保修复后Redis可以正常启动,需要的朋友可以参考下
    2026-04-04
  • muduo源码分析之TcpServer模块详细介绍

    muduo源码分析之TcpServer模块详细介绍

    这篇文章主要介绍了muduo源码分析之TcpServer模块,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Redis 7持久化RDB和AOF的原理机制讲解(图文教程)

    Redis 7持久化RDB和AOF的原理机制讲解(图文教程)

    Redis是一个基于内存的数据库,由于内存的易失性(断电后数据会丢失),Redis提供了持久化机制:将内存中的数据保存到磁盘中,确保数据在Redis服务重启或崩溃后能够恢复,通过持久化,可以避免数据丢失,提高数据的可靠性,Redis提供两种持久化方式:RDB和AOF
    2026-01-01

最新评论