Redis的特性以及使用场景
分布式发展历程参考 陈佬 http://t.csdnimg.cn/yYtWK
介绍redis
Redis(Remote Dictionary Server)是一个基于客户端-服务器架构的在内存中存储数据的中间件,属于NoSQL的一种。它可以用作数据库、缓存/会话存储以及消息队列。
作为一种内存数据库,Redis将数据存储在内存中,因此能够实现非常快速的读写操作。与磁盘存储相比,内存存储能够大幅提升数据的访问速度。这使得Redis成为一个优秀的缓存系统,能够将频繁访问的数据存储在内存中,从而提高读取性能。数据库服务器中的冷热分离(二八原则,对于经常被查询的数据,可以将其存储在Redis中,利用Redis快速的读取和写入能力,以提升数据的访问速度。)就可用redis实现
此外,Redis还提供了丰富的数据结构支持,包括字符串、哈希表、列表、集合和有序集合等,使得它不仅可以简单地存储键值对,还可以处理复杂的数据结构,满足各种不同的需求。
在分布式架构中,Redis也具备主从复制、Sentinel机制和Cluster集群等特性,以确保高可用性和扩展性。
* 介绍NoSQL
MySQL和NoSQL是两种不同类型的数据库系统,它们各自具有一些特点和适用场景。
MySQL:
- 关系型数据库管理系统(RDBMS),采用结构化数据表来存储数据,支持 SQL 查询语言。
- 适用于需要复杂事务处理、强一致性和丰富的查询功能的应用场景。
- 支持ACID(原子性、一致性、隔离性、持久性)事务特性,确保数据的完整性和一致性。
- 具有成熟的数据建模能力,支持复杂的关联查询、多表连接等操作。
- 适用于需要严格数据一致性和复杂数据分析的企业级应用。
NoSQL:
- 非关系型数据库系统,使用灵活的数据模型,可以存储半结构化或非结构化数据。
- 适用于大规模分布式系统、高并发读写、数据量巨大的场景。
- 分为多种类型,包括键值存储、文档型数据库、列存储数据库和图形数据库等,每种类型的NoSQL数据库都有自己的优势。
- 通常以牺牲一部分ACID特性为代价,追求高可用性、横向扩展和灵活的数据模型。
- 更适合于需要高性能、大容量存储和灵活的数据模型的应用,例如日志记录、实时分析、内容管理等场景。
在选择数据库系统时,需要根据具体的应用需求来进行权衡。如果应用需要复杂的事务处理和强一致性,以及复杂的查询需求,那么MySQL等关系型数据库可能是更好的选择。而对于需要高性能、大规模存储和分布式部署的场景,NoSQL数据库可能更为合适。
此外,还有一种趋势是将关系型数据库和NoSQL数据库结合使用,即所谓的“多模型数据库”,以充分发挥各自的优势,满足不同的业务需求。
redis特点
官网https://redis.io/

以下是Redis的一些主要特点:
- 内存存储:Redis将数据存储在内存中,因此读写操作非常快速(以实现高速的读写操作(还引入了IO多路复用,一个线程管理多个socket)。这使得Redis能够实现非常低延迟和高吞吐量的数据访问此外,Redis也支持将数据异步地持久化到磁盘上,以便在重启后能够恢复数据。
- 键值存储:Redis是一种键值存储系统,每个键都关联着一个值,这个值可以是字符串、哈希、列表、集合等多种数据结构。通过键快速访问和操作对应的值
- 数据结构支持:除了基本的字符串键值对之外,Redis还支持丰富的数据结构,如列表、集合、有序集合、哈希表等,这使得Redis可以应对各种不同的需求。
- 可编程性:可直接通过简单的交互式命令进行操作,也可通过脚本的方式,批量执行操作
- 可扩展性:Redis提供了一组API,在原有的功能上进行扩展(以支持更多的数据结构,命令),通过几个语言编写Redis扩展,本质上是一个动态链接库
- 持久化与备份:除了将数据存储在内存中,Redis还支持将数据持久化到硬盘上,以防止数据丢失。
- 分布式(支持集群):Redis Cluster可以让多个Redis实例组成集群,从而提供了分布式的能力。
- 高可用性:Redis提供了主从复制(Master-Slave Replication)和哨兵(Sentinel)机制来确保高可用性和故障转移。以提供数据的高可用性和容错能力。通过配置主从复制和哨兵节点,Redis可以实现自动故障恢复和故障转移。
由于其快速、灵活和丰富的功能,Redis被广泛应用于缓存、会话存储、消息队列、实时排行榜、发布/订阅系统等方面。
redis使用场景


实时数据存储:Redis的快速读写能力和多功能的数据结构使其非常适合用于实时数据存储。例如,在在线游戏中,可以使用Redis存储玩家的实时位置、状态等数据;在金融交易系统中,可以使用Redis存储实时的市场行情数据;
缓存和会话存储:Redis作为缓存的应用非常广泛。它可以存储经常被查询的数据,如数据库查询结果、计算结果、API调用的响应等,从而大幅提高系统的性能和响应速度。此外,Redis还被广泛用作会话存储,用于存储用户登录状态、购物车信息等会话相关的数据。
消息队列(生产者-消费者模型,优势:解耦合;削峰填谷):Redis的流数据类型支持高速数据引入和消息传递,因此在消息队列、事件溯源等场景中有着重要的应用。它可以用于实现发布/订阅模式,处理实时的消息传递和事件通知,也可以用于构建简单的流媒体系统,处理实时数据的输入和输出。
* 不能使用Redis存储大规模数据
相关文章:
Redis的特性以及使用场景
分布式发展历程参考 陈佬 http://t.csdnimg.cn/yYtWK 介绍redis Redis(Remote Dictionary Server)是一个基于客户端-服务器架构的在内存中存储数据的中间件,属于NoSQL的一种。它可以用作数据库、缓存/会话存储以及消息队列。 作为一种内存数…...
【python后端】- 初识Django框架
Django入门 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🌝分享学习心得,欢迎指正,大家一起学习成长! 文章目录 Django入门…...
队列与堆栈:原理、区别、算法效率和应用场景的探究
队列与堆栈:原理、区别、算法效率和应用场景的探究 前言原理与应用场景队列原理应用场景: 堆栈原理应用场景递归原理和堆栈在其中的作用递归原理堆栈作用 队列与堆栈区别队列堆栈算法效率 前言 本文主要讲解数据结构中队列和堆栈的原理、区别以及相关的…...
数据结构与算法【链表:一】Java实现
目录 链表 单向链表 哨兵链表 双向链表 环形链表 链表 链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。 随机访问性能 根据 index 查找,时间复杂度 O(n) 插入或删除性能 起始位置:O(1)结束位…...
数据结构 | 队列的实现
数据结构 | 队列的实现 文章目录 数据结构 | 队列的实现队列的概念及结构队列的实现队列的实现头文件,需要实现的接口 Queue.h初始化队列队尾入队列【重点】队头出队列【重点】获取队列头部元素获取队列队尾元素获取队列中有效元素个数检测队列是否为空销毁队列 Que…...
flutter 集成 高德地图,退出界面闪退
android:allowNativeHeapPointerTagging"false"应用尝试释放系统堆分配器未分配的指针。 应用中的某个部分修改了指针的顶部字节。不能修改指针的顶部字节,您需要更改代码来修复此问题。 指针的顶部字节被错误使用或修改的示例包括: 指向特定…...
数据结构----链式栈的操作
链式栈的定义其实和链表的定义是一样的,只不过在进行链式栈的操作时要遵循栈的规则----即“先进后出”。 1.链式栈的定义 typedef struct StackNode {SElemType data;struct StackNode *next; }StackNode,*LinkStack; 2.链式栈的初始化 Status InitStack(LinkSta…...
识别伪装IP的网络攻击方法
识别伪装IP的网络攻击可以通过以下几种方法: 观察IP地址的异常现象。攻击者在使用伪装IP地址进行攻击时,往往会存在一些异常现象,如突然出现的未知IP地址、异常的流量等。这些现象可能是攻击的痕迹,需要对此加以留意。 检查网络通…...
C 语言指针
C 语言指针 在本教程中,您将学习指针。什么是指针,如何使用它们以及在示例的帮助下使用它们时可能遇到的常见错误。 指针是 C和C 编程的强大功能。在学习指针之前,让我们学习一下C语言编程中的地址。 C 语言地址 如果程序中有变量var&am…...
学【Java多态】-- 写高质量代码
多态的实现条件 在java中要实现,必须要满足如下几个条件,缺一不可。 1.必须在继承体系下2.子类必须要对父类中的方法进行重写3.通过父类的引用调用冲写的方法。 想要真正的学好多态需要去学习一些前置知识,那我们直接开始吧! …...
【汇编】内存的读写与地址空间、寄存器及数据存储
文章目录 前言一、CPU对存储器的读写1.1 cpu对存储器的读写如何进行?1.2 演示 二、内存地址空间三、将各类存储器看作一个逻辑存储器——统一编址内存地址空间的分配方案 三、CPU的组成寄存器是CPU内部的信息存储单元通用寄存器--AX为例“横看成岭侧成峰“ 四、“字…...
DSP生成hex方法
以下使用两种方法生成的HEX文件,亲测可用 (1)万能法 不管.out文件是哪个版本CCS编译器生成的,只要用HEX2000.exe软件,翻译都可以使用。方法: hex2000 -romwidth 16 -memwidth 16 -i -o 20170817chuankou…...
GZ038 物联网应用开发赛题第7套
2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第7套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评…...
ELK之Logstash解析时间相差8h的问题
一、问题描述 服务器当前时间为:2022年 06月 28日 星期二 11:24:22 CST 而logstash解析的时间为2022-06-28T03:15:25.545Z与实际时间相差8h 一、解决办法: 需改logstash的配置文件: 原理就是:定义一个中间变量timestamp&…...
uniapp+vite+vue3开发跨平台app,运行到安卓模拟器调试方法
因为没有使用hbuilder开发uniapp,而是使用了vscode和vite来开发的,所以怎么将这个程序运行到安卓模拟器调试开发呢?其实方法很简单,使用android studio创建一个模拟器或者其他mumu模拟器,然后将项目使用hbuilder打开&a…...
Ubuntu诞生已经19年了
导读2004 年 10 月 20 日,Ubuntu 4.10 正式发布,代号‘Warty Warthog’。 2004 年 10 月 20 日,Ubuntu 4.10 正式发布,代号‘Warty Warthog’。 ▲ Ubuntu 4.10 与最新版 Ubuntu 23.10 的对比 作为 Ubuntu 第一个版本࿰…...
跟着基金买,别墅靠大海?买基金重仓股票,会破产吗?| 附最新选股结果
2020年A股经历了一波结构性牛市。 抱团核心资产的公募基金历史性大赚2万亿,一跃成为全市场顶流。不仅常年霸榜热搜,甚至连游戏直播的弹幕都在讨论基金。 很多年轻人也纷纷跑步入场,毕竟支付宝买基金贼方便。 可惜好景不长,大盘急…...
【教3妹学编辑-mysql】mybatis查询条件遇到的坑及解决方案
2哥 :3妹,今天怎么下班这么晚啊。 3妹:嗨,别提了,今天线上出bug了, 排查了好久。 2哥:啊,什么问题呀? 3妹:我们内部的一个管理系统报错了, 最近排查下来是myb…...
032-从零搭建微服务-定时服务(一)
写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):mingyue: 🎉 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…...
精通Nginx(11)-缓存
缓存能够存储请求的响应结果,以供未来再次使用,进而加速内容的提供。内容缓存可以缓存完整的响应,减少上游服务器的负载,避免了每次都为相同的请求重新运行计算和查询的麻烦。缓存可以提高性能并减少负载,这意味着可以用更少的资源更快地提供服务。NGINX 允许在NGINX 服务…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...


