【中间件】Redis
一、什么是Redis
- Redis是一个开源(BSD许可),
内存存储
的数据结构服务器,可用作数据库,高速缓存和消息队列代理
。 - 它支持
字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型
。 - 内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
二、Redis优势
-
高性能:Redis以
内存
作为数据存储介质,因此读写速度非常快。它使用单线程
模型,避免了多线程带来的上下文切换开销,进一步提高了性能。 -
数据结构丰富:Redis支持多种数据结构,如
字符串、列表、哈希、集合、有序集合
等,这使得开发人员可以更方便地存储和操作数据。 -
持久化支持:Redis可以将数据持久化到磁盘,以便在重启后恢复数据。它提供了两种持久化方式:
RDB(Redis Database)和AOF(Append Only File)
,开发人员可以根据需求选择适合的方式。 -
高可用性:Redis支持主从复制、哨兵和集群等机制,以实现
高可用性和数据的容错性
。主从复制可以实现数据的读写分离,提高系统的并发处理能力;哨兵可以监控主节点的状态,并在主节点宕机时自动切换为新的主节点;集群则可以将数据分布在多个节点上,提供更高的吞吐量和可扩展性。 -
支持事务和Lua脚本:Redis支持事务,可以将多个命令打包成一个事务进行
原子性
的执行。此外,它还支持通过Lua脚本执行复杂的操作,进一步提高了开发的灵活性。 -
缓存功能:作为一种常见的
缓存
方案,Redis可以将热门数据存储在内存中,加快读写速度,并减轻后端数据库的压力。 -
分布式锁支持:Redis可以使用其原子性操作的特性实现
分布式锁
,解决并发场景下的资源竞争问题。 -
丰富特性:支持 publish/subscribe, 通知, key 过期等等特性。
三、Redis的5种基本数据类型
- String(字符串):最基本的数据类型,可以存储任意类型的数据,例如整数、浮点数、JSON字符串等。
- 缓存数据:将经常访问的数据存储在Redis的String类型中,加速读取速度。
- 计数器:使用INCR命令可以实现自增或自减操作,可以用于记录网站的访问量或用户的积分。
# 设置键为"key1"的值为"hello"
SET key1 "hello"
# 获取键为"key1"的值
GET key1
- Hash(哈希):类似于字典或关联数组,用于存储键值对的集合。可以对某个键的单个字段进行操作,也可以对整个哈希对象进行操作。
- 用户信息存储:将用户的基本信息存储在一个Hash类型的键中,每个字段存储一个属性,方便查询和修改。
- 商品信息存储:将商品的各个属性(名称、价格、库存等)存储在一个Hash类型的键中,方便获取商品详情。
# 设置键为"user"的哈希对象的字段和值
HSET user name "John"
HSET user age 25
# 获取键为"user"的哈希对象的字段值
HGET user name
HGET user age
- List(列表):有序的字符串列表,可以在列表的两端进行插入和删除操作。常用于实现队列、栈等数据结构。
- 消息队列:将需要处理的任务或消息作为列表中的元素,通过LPUSH和RPOP等操作进行任务的发布和消费。
- 历史记录:将用户的操作记录存储在列表中,可以通过向列表头部或尾部插入元素来记录最新的操作。
# 在列表的头部插入值
LPUSH fruits "apple"
LPUSH fruits "banana"# 获取列表中的所有值
LRANGE fruits 0 -1
- Set(集合):无序的字符串集合,不允许重复的元素。可以进行交集、并集、差集等集合操作。
- 好友列表:将用户的好友关系存储在一个集合中,通过SADD和SREM等操作来添加或删除好友。
- 唯一值存储:可以用集合存储唯一的标签、用户标识等,通过SADD命令来保证元素的唯一性。
# 添加元素到集合
SADD colors "red"
SADD colors "blue"# 获取集合中的所有元素
SMEMBERS colors
- Sorted Set(有序集合):类似于Set,但每个成员都关联着一个分数,用于进行排序。可以根据分数进行范围查询和按分数排序。
- 排行榜:将用户的分数作为有序集合的分数,用户的ID作为成员,通过ZADD和ZREVRANGE命令来实现排名查询。
- 任务调度:将需要按照优先级执行的任务存储在有序集合中,通过ZADD和ZRANGE命令来按优先级获取任务。
# 添加带有分数的元素到有序集合
ZADD scores 90 "Alice"
ZADD scores 85 "Bob"# 获取有序集合中分数最高的元素
ZREVRANGE scores 0 0
这些数据类型除了支持基本的操作(如读取、写入、删除),还提供了一系列丰富的操作方法,例如对字符串进行自增、对列表进行范围查询、对集合进行交集运算等。
除了这些基本数据类型,Redis还提供了其他高级数据结构,如位图(Bitmap)、布隆过滤器(Bloom Filter)、HyperLogLog等,用于解决特定的问题和优化性能。
四、Redis的持久化机制
数据在重启或异常情况下的可恢复性:RDB(Redis Database)和AOF(Append Only File)。
- RDB持久化:
- RDB持久化通过将Redis内存中的数据快照(Snapshot)写入磁盘来进行持久化。RDB文件是一个二进制文件,包含了当前数据库的数据状态。
- RDB持久化可以手动或自动触发,手动触发可以使用SAVE或BGSAVE命令,自动触发可以通过配置设置定期保存快照的时间。
- RDB持久化的优点是快速、紧凑和经济,适合用于备份数据、离线分析等。
- RDB持久化的缺点是在发生故障时会丢失最后一次快照之后的数据。
- AOF持久化:
- AOF持久化通过将Redis的写命令追加到AOF文件的末尾来进行持久化。AOF文件是一个文本文件,记录了对Redis服务器进行写操作的命令。
- AOF持久化可以以三种方式进行:关闭(关闭持久化),每秒同步(每秒同步一次AOF文件),文件追加(每条写命令追加到AOF文件)。
- AOF持久化的优点是在故障恢复时有更好的数据完整性,可以通过AOF文件重放恢复所有写操作。
- AOF持久化的缺点是相对于RDB持久化,AOF文件会更大,恢复时间更长。
可以根据业务需求选择合适的持久化机制,也可以同时使用两种机制来提供更好的数据保护。
AOF和RDB一起使用的好处:
- AOF:每个写操作都以追加方式记录,可以实现
较高的写性能
,保证较高的数据安全性
。 - RDB:保存数据的快照,
恢复速度更快
,适用于定期备份和灾难恢复
注:两种方式全部开启的话,Redis重启时会默认使用AOF的方式重新构建数据
AOF和RDB的优势对比:
*
表示相对有优势的点
优势 | AOF | RDB |
---|---|---|
数据安全性 | * 增量持久化,每个写操作以追加方式记录,保证数据安全性 | 快照备份,保存整个数据集,确保数据的完整性 |
写入性能 | 相对较慢,因为需要将每个操作追加到AOF文件中 | * 相对较快,因为只需要在特定间隔生成一次RDB文件 |
恢复速度 | 相对较慢,需要执行AOF日志文件中的所有写操作恢复数据 | * 相对较快,只需要加载RDB文件即可恢复数据 |
文件大小 | AOF文件通常会比RDB文件更大,因为记录每个写操作 | * RDB文件通常比AOF文件更小,因为只保存数据的快照 |
适用场景 | * 适用于数据安全性要求较高的场景,如金融、电商等 | * 适用于对性能和存储空间要求较高的场景,如游戏、社交媒体等 |
容灾备份 | * 提供增量备份,记录数据修改操作,确保数据的完整性 | * 提供快照备份,方便定期备份和灾难恢复 |
恢复点选择 | * 可以选择恢复到任意的AOF文件位置,灵活度更高 | 只能恢复到最近生成的RDB文件,不如AOF灵活 |
内存效率 | 略低,因为需要记录每个写操作到AOF文件中 | * 较高,因为RDB文件保存了数据的快照,不需要记录每个操作 |
使用复杂度 | 相对较高,需要更多的配置和监控,如AOF重写,文件合并等 | * 相对较低,只需定期生成RDB文件 |
五、Redis具体业务场景的使用示例
-
缓存:Redis最常见的使用场景是作为缓存层,将频繁读取的数据存储在Redis中,以减轻数据库的压力。
例如,将热门商品、用户登录信息、验证码等缓存到Redis中,可以大幅提高访问速度和系统的扩展性。 -
会话管理:Redis可用于存储用户会话数据
例如用户登录状态、购物车信息等。通过将会话数据存储在Redis中,可以实现分布式系统下多台服务器之间实时共享用户的登录状态和购物车数据。 -
分布式锁:Redis提供了原子性操作和高性能的特点,非常适合实现分布式锁。
在分布式系统中,可以使用Redis的 SETNX 命令来实现分布式锁,以保证在多个进程或服务器之间互斥地访问共享资源。 -
计数器、排行榜:Redis的原子性操作和高性能特点使其成为实现计数器和排行榜的理想选择。
例如,可以使用Redis的 INCRBY 命令来实现实时计数器,记录网站的访问量或用户的点赞数;使用有序集合来存储用户的积分信息,并根据积分进行排行。 -
消息队列:Redis的发布/订阅功能可以用于实现简单的消息队列。
消息发布者将消息发布到指定的频道,而订阅者可以订阅感兴趣的频道并接收消息,从而实现简单的消息通信和任务分发。 -
实时更新:Redis的高性能和持久化功能使其非常适合处理实时更新的场景
例如实时聊天、实时数据分析等。通过将实时数据存储在Redis中,并使用Redis的发布/订阅功能或数据持久化功能,可以实现实时更新和处理实时数据。
分布式锁,分布式缓存,lau脚本,数据类型详解等待后续补充
相关文章:
【中间件】Redis
一、什么是Redis Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置…...
请结合给定资料中的具体事例,谈谈你对“海洋的污染将毁灭鱼儿的家园,但让人类不寒而栗的毁灭绝非仅此而已!”这句话的理解。(10分)
题目 【2010年国考省级以上(含副省级)申论真题】2.请结合给定资料中的具体事例,谈谈你对“海洋的污染将毁灭鱼儿的家园,但让人类不寒而栗的毁灭绝非仅此而已!”这句话的理解。(10分)…...
Java SE 与 Java EE:基础与进阶的探索之旅
在编程世界中,Java语言以其跨平台、面向对象、丰富的类库等特点,成为了众多开发者和企业的首选编程语言。而Java SE与Java EE,作为Java平台的两个重要组成部分,各自承载着不同的使命,同时又紧密相连,共同构…...
PH热榜 | 2024-11-24
DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 在线预览 1. AutoFlow Studio 标语:借助简化的AI质检,更快发布产品,更聪明地进行测试。 介绍&…...
LLM 系列学习教程
LLM101 检查 Tokenizer 词表大小与 LLM 的 Embedding 和 LM_head 输入大小是否匹配对 SBert 进行训练、预测、评估使其进行相似度计算对 BERT 进行训练、预测、评估使其进行文本分类使用 CLIP 模型进行文本图像匹配对 JoinBERT 进行训练、预测使其进行对话意图和槽位联合识别对…...
基于yolov8、yolov5的茶叶等级检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
摘要:茶叶等级检测在茶叶生产、质量控制和市场销售中起着至关重要的作用,不仅能帮助相关部门实时监测茶叶质量,还为智能化检测系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的茶叶等级检测模型,该模…...
Excel求和如何过滤错误值
一、问题的提出 平时,我们在使用Excel时,最常用的功能就是求和了,一说到求和你可能想到用sum函数,但是如果sum的求和区域有#value #Div等错误值怎么办?如下图,记算C列中工资的总和。 直接用肯定会报错&…...
头文件包含
大家好,今天我们来聊聊头文件包含这方面的知识,并且在这里提出几个问题,头文件多次包含有什么影响吗?“”和〈〉这两种方式都能包含标准头文件吗? 一.文件包含 #include指令可以使另外一个文件被编译。就像它实际出现…...
37_U-Net网络详解
1.U-Net 网络概述 U-Net 是一种深度学习模型,广泛用于图像的语义分割任务。U-Net 网络的结构特别适合医学影像分割,尤其在少量训练数据的情况下表现优异。该网络由一个编码器-解码器架构组成,具有对称的“U”形结构,因此得名为 U…...
fastapi入门
好的,我将为您生成一个更详细、易于理解的 FastAPI 入门学习文档,特别是对复杂概念(如依赖注入)进行深入解释,帮助您在没有太多基础的情况下也能顺利学习和掌握 FastAPI。 FastAPI 入门学习文档 目录 简介环境搭建 2…...
RabbitMQ 之 死信队列
一、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理 解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行…...
Android-如何实现Apng动画播放
01 Apng是什么 Apng(Animated Portable Network Graphics)顾名思义是基于 PNG 格式扩展的一种动画格式,增加了对动画图像的支持,同时加入了 24 位图像和8位 Alpha 透明度的支持,并且向下兼容 PNG。 Google封面图 02 A…...
微服务系统架构图
微服务架构是一种将单一应用程序开发为一组小型服务的架构风格。每个服务都在自己的进程中运行,它们之间采用轻量级的通信机制(如 HTTP/REST 或消息队列)进行相互协作。以下是关于微服务系统架构的简要介绍:一、核心特点独立部署 …...
04 —— Webpack打包CSS代码
加载器css-loader :解析css代码 webpack 中文文档 | webpack中文文档 | webpack中文网 加载器style-loader:把解析后的css代码插入到DOM style-loader | webpack 中文文档 | webpack中文文档 | webpack中文网 准备css代码,放到src/login目…...
【数据结构专栏】二叉搜索树(Binary Search Tree)的剖析?
文章目录 🧨前言1、二叉搜索树的基本概念?2、二叉搜索树的节点结构组成?3、二叉搜索树的插入操作?4、二叉搜索树的删除操作?5、二叉搜索树的遍历? 6、二叉搜索树的性能分析? 🎉完整代…...
SSM全家桶 1.Maven
或许总要彻彻底底地绝望一次 才能重新再活一次 —— 24.11.20 maven在如今的idea中已经实现自动配置,不需要我们手动下载 一、Maven的简介和快速入门 Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建测试、打包和发…...
前端三剑客(二):CSS
目录 1. CSS 基础 1.1 什么是 CSS 1.2 语法格式 1.3 引入方式 1.3.1 行内样式 1.3.2 内部样式 1.3.3 外部样式 1.4 CSS 编码规范 2. 选择器 2.1 标签选择器 2.2 id 选择器 2.3 class 选择器(类选择器) 2.4 复合选择器 2.5 通配符选择器 3. 常用 CSS 样式 3.1 c…...
解析html将表格插入word文档
用到依赖包 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.15.2</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweav…...
Java核心知识详解:String类、StringBuffer、数组及日期时间的全面解析
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 标题 Java核心知识详解:String类、StringBuffer、数组及日期时间的全面解析 摘要 在Java中…...
唯一设备序列号(UID)、唯一产品识别码(UPI)和备份寄存器BKP
文章目录 一、唯一设备序列号UID二、唯一产品识别码UPI三、备份寄存器BKP 一、唯一设备序列号UID MCU 系列产品内置两个不同长度的唯一设备序列号,分别为 96 位的 UID(Unique device ID)和 128 位的UCID(Unique Customer ID),这两个设备序列号存放在闪存…...
Kafka - 消费者程序仅消费一半分区消息的问题
1. 问题描述 修改安全服务状态有时逻辑正常有时候逻辑不正常,排查incident服务的日志发现消息可以正常发送到 kafka topic ,但是incident-cron 服务有时候有拉取消息的日志有时候没有日志。 kafka 生产者可以将消息正常发送到 kafka topic ,…...
养老院管理系统+小程序项目需求分析文档
智慧综合养老服务平台是以业务为牵引、场景为驱动,围绕“老人”业务域,持续沉淀和打磨形成适应不同养老业务发展需要的业务能力,推动业务模式升级,为养老服务提供数字化解决方案,并依托实体站点与养老机构实现线上线下…...
K8s 下通过prometheus监控 nginx
k8s 下有两个版本的nginx ingress 分别是 ingress nginx 以及 nginx ingress Ingress-nginx 与 Nginx-ingress - LeoZhanggg - 博客园 这里我讨论的是 nginx ingress Nginx Ingress 使用Prometheus 导出数据 nginx ingress 本身支持通过支持这个提供prometheus 格式的…...
基于SpringBoot的京东绿谷旅游信息服务平台设计与实现(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
使用Redis生成全局唯一id
为了生成一个符合要求的分布式全局ID,我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成: 符号位(1 bit):始终为0,表示正数。时间戳(31 bit):表示从某个起始…...
pytorch自定义算子导出onnx
文章目录 1、为什么要自定义算子?2、如何自定义算子3、自定义算子导出onnx4、example1、重写一个pytorch 自定义算子(实现自定义激活函数)2、现有算子上封装pytorch 自定义算子(实现动态放大超分辨率模型) 1、为什么要…...
从搭建uni-app+vue3工程开始
技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia、axios 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader,注意需要版本10&…...
波点音乐自动点击
波点音乐 import uiautomator2 as u2 import time import sys import os# 动态点击时间,打印剩余时间 def dynamic_sleep(seconds):wait_time secondsfor i in range(wait_time):print(f"Waiting... {wait_time - i} seconds remaining")sys.stdout.flu…...
【一篇搞定配置】wget 下载与安装(Window)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀各种软件安装与配置_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1.…...
2025年春招修订版《C/C++笔面试系列》(1) C语言经典笔面试题(上)
C语言是嵌入式开发的常用语言,也是主要语言,很多企业在招聘嵌入式软件工程师时,C语言的熟练程度是一个重要考察点。笔试也是以C语言为主,所以想要拿到面试机会,还得通过C语言笔试,本专题总结了各大企业C语言…...
【042C】基于51RFID门禁系统(LCD12864显示)【Proteus仿真+Keil程序+报告+原理图】
☆、设计硬件组成:51单片机最小系统RFID读卡器4*4矩阵键盘AT24C02存储芯片LCD12864液晶显示继电器蜂鸣器LED灯。 1、设计采用STC89C52、AT89C52、AT89S52作为主控芯片,采用LCD12864液晶显示屏实时显示门禁系统; 2、系统集成两种解锁方式&am…...
scratch二次开发:blockly工作区垃圾桶和进度条的隐藏和显示
大家好,我是小黄。 本期给大家介绍的内容是实现blockly工作区的垃圾桶和进度条的显示和隐藏实现。 本次基于的项目源码大家可以关注小黄回复垃圾桶自行获取。 一.垃圾桶的显示和实现。 在blockly中,我们进行块的删除的时候最常用的两种方法是…...
【STM32】MPU6050初始化常用寄存器说明及示例代码
一、MPU6050常用配置寄存器 1、电源管理寄存器1( PWR_MGMT_1 ) 此寄存器允许用户配置电源模式和时钟源。 DEVICE_RESET :用于控制复位的比特位。设置为1时复位 MPU6050,内部寄存器恢复为默认值,复位结束…...
LDR6020驱动的Type-C接口显示器解决方案
一、引言 随着科技的飞速发展,Type-C接口凭借其高速数据传输、强大的电力传输能力以及便捷的正反可插设计,正逐渐成为现代电子设备的主流接口标准。在显示器领域,Type-C接口的引入不仅简化了线缆连接,还为用户带来了更丰富的功能…...
Spring Boot + Android 实现登录功能
在移动互联网的今天,许多应用需要通过移动端实现与服务器的交互功能,其中登录是最常见且基础的一种功能。通过登录,用户可以获得独特的身份标识,从而访问特定的资源或服务。本篇博客将详细介绍如何使用 Spring Boot 和 Android 实…...
【通俗理解】边际化技巧在概率论中的应用——从公式到实例
【通俗理解】边际化技巧在概率论中的应用——从公式到实例 关键词提炼 #边际化技巧 #概率论 #联合概率 #条件概率 #积分计算 #概率分布 #贝叶斯推断 第一节:边际化技巧的类比与核心概念【尽可能通俗】 边际化技巧,就像是你在一个复杂的概率迷宫中&am…...
Chen_AdaMV-MoE_Adaptive_Multi-Task_Vision_Mixture-of-Experts 译文
摘要 稀疏激活的专家混合(MoE)正在成为多任务学习(MTL)的一个有前途的范例。 MoE 不是将多个任务的知识压缩到单个模型中,而是分离参数空间,仅利用给定任务类型及其输入的相关模型片段,从而提供…...
多线程下使用数据库 - 20241124
问题 并发性较低,每秒千次但是较高一致性,比如利用数据库中的数据进行判断是否执行某个操作 存在的问题是,如何只锁定判断相关的数据,而不影响数据库操作无关数据。脏读/不可重复读/幻读 解决方案 利用数据InnoDB引擎的LBCC和…...
GMAN解读(论文+代码)
一、注意力机制 注意力机制与传统的卷积神经网络不同的是,前者擅长捕获全局依赖和长程关系,权重会动态调整。而后者对于所有特征都使用同一个卷积核。关于更多注意力机制内容,详见: 注意力机制、自注意力机制、多头注意力机制、通…...
《文件操作》
一 . 文本文件和二进制文件 根据数据的组织形式,数据文件被分为了二进制文件和文本文件 数据在内存中是以二进制的形式存储,如果不加转换的输出到外存的文件中,就是二进制文件。 如果要求在外存上以ASCII 码的形式存储,则需要再存…...
【君正T31开发记录】8.了解rtsp协议及设计模式
前边搞定了驱动,先不着急直接上手撸应用层的代码,先了解一下大致要用到的东西。 设计PC端先用vlc rtsp暂时H264编码(vlc好像不支持h265,这个后边我试试)的视频流,先需要支持上rtsp server,了解rtsp协议是必…...
C++菜鸟教程 - 从入门到精通 第三节
上节课的题 上节课的题,大家都做出来了吗? 看一下这道题: 题目描述 N!1*2*...*N; 例5!1*2*3*4*5120. 编程求1!2!3!...N!. 输入 输入一行,只有一个整数n (1<n<10) 输出 输出只有一行(这意味着末尾有一个回车符号),包括1…...
原生JS和CSS,HTML实现开屏弹窗
开屏弹窗常应用于打开游戏,或者打开网站的时候,跳出来在正中间,来显示一些信息,并可以设置今日不再显示 CSS代码如下 <style>#box {width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.2);position: relative…...
微软发布Win11 24H2系统11月可选更新KB5046740!
系统之家11月22日报道,微软针对Win11 24H2系统推出2024年11月最新可选更新补丁KB5046740,更新后系统版本后升至26100.2454,此次更新后修复当应用程序以PDF和XLSX格式导出图表对象时停止响应、无法使用API查找旋转信息等问题。以下小编将给大家…...
【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列
目录 一.TTL 1.设置消息的TTL 2.设置队列的TTL 3.俩者区别 二.死信队列 定义: 消息成为死信的原因: 1.消息被拒绝(basic.reject 或 basic.nack) 2.消息过期(TTL) 3.队列达到最大长度 编辑 …...
【Linux】gcc/g++使用
编译 我们知道,gcc只能编译C,g既能编译C,也能编译C。 由于两者的选项是相同的,这里我们使用gcc来说明。 这就是一个我们在linux中gcc编译一段代码后会自动生成一个a.out为名的可执行文件,然后我们./a.out,…...
IDEA2023 SpringBoot整合MyBatis(三)
一、数据库表 CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,gender ENUM(Male, Female, Other),email VARCHAR(100) UNIQUE,phone_number VARCHAR(20),address VARCHAR(255),date_of_birth DATE,enrollment_date DATE,cours…...
Java网络编程 - cookiesession
cookie 之前学习了 Okhttp3 库可以调用API、抓取网页、下载文件。但是这些操作都是不要求登录的,如果 API、网页、文件等内容要求登录才能访问,就需要学习新的 cookie 相关的知识。 下面以豆瓣为例,使用 Java 程序读取“我的豆瓣”页面内容…...
100.【C语言】数据结构之二叉树的堆实现(顺序结构) 1
目录 1.顺序结构 2.示意图 编辑 从物理结构还原为逻辑结构的方法 3.父子节点编号的规律 4.顺序存储的前提条件 5.堆的简介 堆的定义 堆的两个重要性质 小根堆和大根堆 6.堆的插入 7.堆的实现及操作堆的函数 堆的结构体定义 堆初始化函数HeapInit 堆插入元素函…...
《Python基础》之循环结构
目录 简介 一、for循环 1、基本语法与作用 2、使用 range() 函数配合 for 循环 3、嵌套的for循环 二、while循环 1、基本语法与作用 2、while 循环嵌套 (1)、while循环与while循环嵌套 (2)、while循环与for循环嵌套 简介 …...