我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redis中list的实现方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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的实现方式大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redis中list的实现方式

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

下载Word文档

猜你喜欢

Redis中List实现双链表

目录概述:特征:(与LinkedList类似)List常见命令1.Lpush key element.....:向列表左侧插入一个或多个元素 2.LPOP key :移除并返回列表左侧的第一个元素,没有则返回nil3.RPUSH key e
2023-06-09

Redis中的List类型是怎样实现的

Redis中的List类型是通过双向链表实现的。在Redis中,每个list对象都包含一个指向头节点和尾节点的指针,以及存储实际数据的节点。双向链表的结构使得在列表的两端进行插入和删除操作都可以在常数时间内完成,因此List类型在Redis
Redis中的List类型是怎样实现的
2024-04-09

Redis分布式锁的实现方式

目录一、分布式锁是什么1、获取锁2、释放锁二、代码实例上面代码存在锁误删问题:三、基于SETNX实现的分布式锁存在下面几个问题1、不可重入2、不可重试3、超时释放4、主从一致性四、Redisson实现分布式锁1、pom2、配置类3、测试类五
2023-04-03

redis删除hash的实现方式

目录Redis删除hash方式redis之hash类型解读redis中存取hasandroidh类型常用命令hash命令小结总结redis删除hash方式在工作中遇到删除hash类型的缓存时遇到了,怎样也删不掉redis里面的缓存,后来发
2023-01-28

Redis中的List列表

List 文章目录 List常用命令lpush/rpush/lrangelpop/rpoplindex 按照下标取得值llen 获取元素个数lrem keyltrim keyrpoplpushlset key index value
2023-08-18

C++之list容器模拟实现方式

这篇文章主要介绍了C++之list容器模拟实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-05

浅析PHP分布式中Redis实现Session的方法

本文介绍的是PHP分布式中Redis实现Session的方法,下面话不多说,直接先来看两个方法是什么 方法一:找到配置文件php.ini,修改为下面内容,保存并重启服务session.save_handler = redis session
2022-06-04

Redis数据库中实现分布式锁的方法

分布式锁是一个在很多环境中非常有用的原语,它是不同进程互斥操作共享资源的唯一方法。有很多的开发库和博客描述如何使用Redis实现DLM(Distributed Lock Manager),但是每个开发库使用不同的方式,而且相比更复杂的设计与
2022-06-04

Java实现redis分布式锁的三种方式

本文主要介绍了Java实现redis分布式锁的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

编程热搜

目录