iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >redis中list的实现方式
  • 597
分享到

redis中list的实现方式

2024-04-02 19:04:59 597人浏览 八月长安
摘要

了解Redis中list的实现方式?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!Redis 列表(list)是简单的字符串

了解Redis中list的实现方式?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

Redis 列表(list)是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

list

常用命令:  

lpush,rpush,lpop,rpop,lrange,BLPOP(阻塞版)等。

应用场景:  

Redis list的应用场景非常多,也是Redis最重要的数据结构之一。

我们可以轻松地实现最新消息排行等功能。

Lists的另一个应用就是消息队列,可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行。

实现方式:  

Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。

RPOPLPUSH source destination

命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:

将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。

将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。

一个典型的例子就是服务器监控程序:它们需要在尽可能短的时间内,并行地检查一组网站,确保它们的可访问性。

    redis.lpush "downstream_ips", "192.168.0.10"  
    redis.lpush "downstream_ips", "192.168.0.11"  
    redis.lpush "downstream_ips", "192.168.0.12"  
    redis.lpush "downstream_ips", "192.168.0.13"  
    Then:  
    next_ip = redis.rpoplpush "downstream_ips", "downstream_ips"

BLPOP

假设现在有 job 、 command 和 request 三个列表,其中 job 不存在, command 和 request 都持有非空列表。考虑以下命令:

BLPOP job command request 30  #阻塞30秒,0的话就是无限期阻塞,job列表为空,被跳过,紧接着command 列表的第一个元素被弹出。

1) "command"                             # 弹出元素所属的列表

2) "update system..."                    # 弹出元素所属的值

为什么要阻塞版本的pop呢,主要是为了避免轮询。举个简单的例子如果我们用list来实现一个工作队列。执行任务的thread可以调用阻塞版本的pop去获取任务这样就可以避免轮询去检查是否有任务存在。当任务来时候工作线程可以立即返回,也可以避免轮询带来的延迟。

感谢各位的阅读!看完上述内容,你们对redis中list的实现方式大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: redis中list的实现方式

本文链接: https://www.lsjlt.com/news/53359.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis中list的实现方式
    了解redis中list的实现方式?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!Redis 列表(list)是简单的字符串...
    99+
    2024-04-02
  • Redis中List实现双链表
    目录概述:特征:(与LinkedList类似)List常见命令1.Lpush key element.....:向列表左侧插入一个或多个元素 2.LPOP key :移除并返回列表左侧的第一个元素,没有则返回n...
    99+
    2023-06-09
    Redis List双链表 Redis 双链表
  • Redis中的List类型是怎样实现的
    Redis中的List类型是通过双向链表实现的。在Redis中,每个list对象都包含一个指向头节点和尾节点的指针,以及存储实际数据...
    99+
    2024-04-09
    Redis
  • Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
    目录使用 Redis 实现消息队列基于List的消息队列分析下源码实现基于 Streams 的消息队列分析下源码实现stream 的结构streamCG 消费者组streamCons...
    99+
    2024-04-02
  • redis中分布式锁的实现方法
    小编给大家分享一下redis中分布式锁的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!redis分布式锁:1、实现原理利...
    99+
    2024-04-02
  • Redis分布式锁的实现方式
    目录一、分布式锁是什么1、获取锁2、释放锁二、代码实例上面代码存在锁误删问题:三、基于SETNX实现的分布式锁存在下面几个问题1、不可重入2、不可重试3、超时释放4、主从一致性四、Redisson实现分布式锁1、pom2...
    99+
    2023-04-03
    Java Redis分布式锁实现方式 实现Redis分布式锁 Redis分布式锁实现
  • php如何实现Redis的List操作
    这篇文章将为大家详细讲解有关php如何实现Redis的List操作,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。List操作//从list头部插入一个值。 $ret&nb...
    99+
    2024-04-02
  • redis删除hash的实现方式
    目录Redis删除hash方式redis之hash类型解读redis中存取hash类型常用命令hash命令小结总结redis删除hash方式 在工作中遇到删除hash类型的缓存时遇到了,怎样也删不掉redis里面的缓存,...
    99+
    2023-01-28
    redis删除hash redis hash redis hash删除
  • redis中list存储对象的方法
    小编给大家分享一下redis中list存储对象的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如果需要用到Redis存储Li...
    99+
    2024-04-02
  • Redis中的List列表
    List 文章目录 List常用命令lpush/rpush/lrangelpop/rpoplindex 按照下标取得值llen 获取元素个数lrem keyltrim keyrpoplpushlset key index value...
    99+
    2023-08-18
    redis list java
  • Redis分布式锁的正确实现方式
    Redis分布式锁的正确实现方式?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。可靠性首先,为了确保分布式锁可用,我们至少要确保...
    99+
    2024-04-02
  • Java与Scala创建List与Map的实现方式
    目录Java与Scala创建List与MapJava自定义map与scala map对比1. 背景2. java代码Java与Scala创建List与Map //Java Lis...
    99+
    2024-04-02
  • C++之list容器模拟实现方式
    目录总述一、节点类二、迭代器类成员变量构造函数*重载->重载“++”“==“和”!=”三、反向迭代器类成...
    99+
    2023-02-05
    C++ list容器 list容器模拟实现 模拟实现list
  • redis中对list进行排序的方法
    这篇文章主要介绍了redis中对list进行排序的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。redis中对list排序使用sort进行。...
    99+
    2024-04-02
  • python3操作redis实现List列表实例
    目录下面是具体例子详解和代码: ①lrange(key , start , stop) ②lpush(key , value) ③rpush(key , value) ④lpop(k...
    99+
    2024-04-02
  • Java实现redis分布式锁的三种方式
    目录一、引入原因二、分布式锁实现过程中的问题问题一:异常导致锁没有释放问题二:获取锁与设置过期时间操作不是原子性的问题三:锁过期之后被别的线程重新获取与释放问题四:锁的释放不是原子性...
    99+
    2022-11-13
    Java redis分布式锁 Java 分布式锁
  • Redisson实现Redis分布式锁的几种方式
    目录Redis几种架构 普通分布式锁 单机模式 哨兵模式 集群模式 总结 Redlock分布式锁 实现原理 问题合集 前几天发的一篇文章《Redlock:Redis分布式锁最牛逼的实...
    99+
    2024-04-02
  • redis实现分布式的方法总结
    一 为什么使用 Redis 在项目中使用 Redis,主要考虑两个角度:性能和并发。如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis。 性能: 如下图所...
    99+
    2024-04-02
  • redis实现限流的方式有哪些
    Redis实现限流的方式有以下几种:1. 固定窗口算法:对请求进行计数,在固定的时间窗口内,如果请求数超过阈值,则拒绝请求。2. 滑...
    99+
    2023-09-14
    redis
  • redis实现分布式事务的方法
    小编给大家分享一下redis实现分布式事务的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题描述:某电商平台,首发一款新品...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作