百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

redis工作模式以及工作原理分析

wptr33 2025-01-05 20:31 10 浏览

redis应用场景

会话缓存:在 Web 应用中,将用户的会话信息存储在 Redis 中,便于快速访问和共享会话数据。

任务队列:通过 Redis 的 List 数据结构来实现任务队列系统,生产者将任务加入队列,消费者从队列中取出并处理任务。

Session 存储

Redis 也常用于存储用

户会话信息,因为它提供快速的读取和写入操作,并且支持多种客户端连接方式。

数据过期与清除

Redis 支持设置键的过期时间,这使得 Redis 成为管理临时数据的理想选择。

redis的工作模式

1.单机模式

  • 简单易用,部署成本低。
  • 性能非常高,适用于小型应用
  • 数据存储单一 容易数据丢失
  • 不支持高可用性和负载均衡。

2.主从复制模式(Master-Slave)

主从复制模式通过将 Redis 实例分为主节点(Master)和从节点(Slave),从节点会复制主节点的数据。在这种模式下,主节点负责处理写请求,从节点负责处理读请求。

  • 主节点处理写操作,所有的数据更新都会同步到从节点。
  • 从节点只读数据,可以在多个从节点之间进行负载均衡,分担读请求。
  • 可以提高读取性能,但写入性能仍然依赖于主节点

3哨兵模式(Sentinel)

哨兵模式通过 Redis Sentinel 实现高可用性。Sentinel 监控 Redis 主从复制集群,自动检测主节点故障并进行主从切换,确保 Redis 系统的高可用性。

  • Sentinel 负责监控 Redis 主从集群,自动检测主节点是否失效。
  • 当主节点出现故障时,Sentinel 会自动将某个从节点提升为新的主节点,并更新其他从节点的配置。
  • 支持故障自动恢复和自动选举新主节点。

4.集群模式(Cluster)

Redis 集群模式是 Redis 的分布式架构模式,它允许将数据分布在多个节点上,实现横向扩展。通过将数据分片(sharding),Redis 集群可以支持更大的数据量和高吞吐量。

  • Redis 集群通过数据分片(sharding)机制将数据分布到多个节点上,每个节点只负责部分数据。
  • 支持自动故障转移和重新分配数据。
  • 每个节点可以有多个副本(从节点),提高可用性。

redis的哨兵模式,集群模式以及主从工作原理
主从模式

主节点(Master):负责处理所有的写请求(如 SET、DEL 等),并将这些写操作同步到从节点。

  • 从节点(Slave):只负责处理读请求(如 GET 等)。从节点会持续同步主节点的数据。数据同步过程通过 全量复制增量复制(AOF 日志或 RDB 快照)进行。主节点将其所有的写操作(包括删除、更新等)同步给所有从节点。通常,从节点是只读的,但也可以配置为写入。
  • 集群模式

    数据分片:Redis 集群将数据划分为 16384 个槽(slots),每个节点负责其中的一部分槽。数据的键根据哈希算法被分配到不同的槽中,从而分布到多个节点上。每个节点只负责存储和处理一部分数据。

    客户端会根据哈希槽的算法来判断数据存储在哪个节点上。如果客户端需要访问的数据不在本地节点,会自动通过集群的其他节点进行请求转发。

  • 主节点(Master):每个主节点负责一个或多个槽的数据存储和处理。从节点(Slave):每个主节点可以有多个从节点,负责数据备份和高可用性。
  • 相关推荐

    【推荐】一款开源免费、美观实用的后台管理系统模版

    如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍...

    Android架构组件-App架构指南,你还不收藏嘛

    本指南适用于那些已经拥有开发Android应用基础知识的开发人员,现在想了解能够开发出更加健壮、优质的应用程序架构。首先需要说明的是:AndroidArchitectureComponents翻...

    高德地图经纬度坐标批量拾取(高德地图批量查询经纬度)

    使用方法在桌面上新建一个index.txt文件,把下面的代码复制进去保存,再把文件名改成index.html保存,双击运行打开即可...

    flutter系列之:UI layout简介(flutter ui设计)

    简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。...

    Android开发基础入门(一):UI与基础控件

    Android基础入门前言:...

    iOS的布局体系-流式布局MyFlowLayout

    iOS布局体系的概览在我的CSDN博客中的几篇文章分别介绍MyLayout布局体系中的视图从一个方向依次排列的线性布局(MyLinearLayout)、视图层叠且停靠于父布局视图某个位置的框架布局(M...

    TDesign企业级开源设计系统越发成熟稳定,支持 Vue3 / 小程序

    TDesing发展越来越好了,出了好几套组件库,很成熟稳定了,新项目完全可以考虑使用。...

    WinForm实现窗体自适应缩放(winform窗口缩放)

    众所周知,...

    winform项目——仿QQ即时通讯程序03:搭建登录界面

    上两篇文章已经对CIM仿QQ即时通讯项目进行了需求分析和数据库设计。winform项目——仿QQ即时通讯程序01:原理及项目分析...

    App自动化测试|原生app元素定位方法

    元素定位方法介绍及应用Appium方法定位原生app元素...

    61.C# TableLayoutPanel控件(c# tabcontrol)

    摘要TableLayoutPanel在网格中排列内容,提供类似于HTML元素的功能。TableLayoutPanel控件允许你将控件放在网格布局中,而无需精确指定每个控件的位置。其单元格...

    想要深入学习Android性能优化?看完这篇直接让你一步到位

    ...

    12个python数据处理常用内置函数(python 的内置函数)

    在python数据分析中,经常需要对字符串进行各种处理,例如拼接字符串、检索字符串等。下面我将对python中常用的内置字符串操作函数进行介绍。1.计算字符串的长度-len()函数str1='我爱py...

    如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步

    假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将...

    Python入门知识点总结,Python三大数据类型、数据结构、控制流

    Python基础的重要性不言而喻,是每一个入门Python学习者所必备的知识点,作为Python入门,这部分知识点显得很庞杂,内容分支很多,大部分同学在刚刚学习时一头雾水。...