Redis原理剖析

一、Redis简介

Redis是一个开源的,基于网络的,高性能的key-value数据库,弥补了memcached这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用,满足实时的高并发需求。
Redis跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。支持在服务器端计算集合的并、交和补集(difference)等,还支持多种排序功能。

说明: Redis客户端跟服务端间的网络数据传输未加密,建议不要使用Redis存取敏感数据,否则可能存在安全风险。

二、Redis结构

Redis包含Redis Server与Redis-WS,如下图所示
在这里插入图片描述

  • Redis Server:Redis组件的核心模块,负责Redis协议的数据读写、数据持久化、主从复制、集群功能。
  • Redis-WS:Redis WebService管理模块,主要负责Redis集群的创建、扩容、减容、查询、删除等操作,集群管理信息存入DB数据库。

三、Redis原理

Redis持久化

Redis提供了RDB与AOF等多种不同级别的持久化方式。

  • RDB持久化
    可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。

  • AOF持久化
    记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF文件中的命令全部以Redis协议的格式来保存,新命令会被追加到文件的末尾。Redis还可以在后台对AOF文件进行重写,使得AOF文件的体积不会超出保存数据集状态所需的实际大小。

Redis可以同时使用AOF持久化和RDB持久化。在这种情况下,当Redis重启时,它会优先使用AOF文件来还原数据集,因为AOF文件保存的数据集通常比RDB文件所保存的数据集更完整。用户也可以关闭持久化功能,让数据只在服务器运行时存在。

Redis运行模式

Redis实例可以部署在一个或多个节点上,且一个节点上也可以部署一个或多个Redis实例(每个节点上Redis实例的个数由软件根据节点硬件资源情况计算得出)。

最新版本的Redis支持集群功能,可以将多个Redis实例组合为一个Redis集群,从而对外提供一个分布式key-value数据库。集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。

  • 单实例模式
    单实例模式逻辑部署方式如下图所示:
    在这里插入图片描述
    说明:

  • 一个主实例(master)可以对应有多个从实例(slave),从实例本身还可连接从实例。

  • 发给主实例的命令请求,主实例会实时同步给从实例进行处理。

  • 主实例宕机,从实例不会自动升主。

  • 从实例默认只读,在配置了“slave-read-only”为no时,从实例也可写。但从实例重启后,会从主实例同步数据,之前写入从实例的数据丢失。

  • 多层级从实例的结构,相对所有从实例都直接连接在主实例下的结构,由于减少了主实例需要直接同步的从实例个数,一定程度上能提升主实例的业务处理性能。

  • 集群模式
    集群模式逻辑部署方式如下图所示:
    在这里插入图片描述
    说明:

  • 多个Redis实例组合为一个Redis集群,共16384个槽位均分到各主实例上。

  • 集群中的每个实例都记录有槽位与实例的映射关系,客户端也记录了槽位与实例的映射。客户端根据key进行哈希计算,然后和16384进行取模运算,得到槽位值。根据槽位-实例映射,将消息直接发送到对应实例处理。

  • 默认情况,从实例不能读不能写,在线执行readonly命令可使从实例可读。

  • 主实例故障,由集群中剩余的主实例选举出一个从实例升主,需要半数以上主实例运行状态“良好”才能选举。

  • cluster-require-full-coverage配置项指示集群是否要求完整,若配置为yes,则其中一组主从都故障时,集群状态为故障,整个集群不能处理命令;若配置为no,则半数以上主实例运行状态“良好”,集群状态是“良好”。

  • Redis集群可以进行扩容、减容(新实例加入集群或Redis实例退出集群),并进行槽位迁移。

四、Redis-Data-Sync

Redis-Data-Sync是一个用于主备集群Redis服务之间的数据同步工具。该工具从主集群中实时同步逻辑集群内的数据到备集群,在备集群上提供一个主集群中Redis服务的数据副本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/101057.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SqlServer 快速数据库脚本迁移

文章目录 前言数据库脚本数据库->任务->生成脚本选择数据库对象高级 如何迁移:脚本修改 如何使用新建数据库 前言 做工业的,经常遇到内网的项目,就是数据往本地的数据库传。由于这个问题所以我们需要新建一个数据库。最合适的就是数据…

App Tamer for Mac CPU智能控制管理

App Tamer是一款针对 macOS 平台的软件,它可以帮助用户有效地管理和控制正在运行的应用程序。通过优化 CPU 使用率,减少电池消耗和降低系统负载,App Tamer 提供了更加流畅和高效的计算体验。 App Tamer 的主要特点包括: 智能控制&…

使用R语言绘制折线图

写在前面 昨天我们分享了使用Python绘制折线图的教程,跟着NC学作图 | 使用python绘制折线图,考虑到很多同学基本不使用Python绘图。那么,我们也使用R语言复现此图形。 此外,在前期的教程中,我们基本没有分享过折线图的教程。因此,我们在这里也制作一期关于折线图的教程。…

财务数据分析模板有哪些,能满足决策吗?

虽然企业的业务经营各有不同,但在财务数据分析上却有着相似的需求与流程,因此财务数据分析是可以形成一套标准化模板的。奥威BI数据可视化工具从多年丰富的BI项目中总结经验,形成一套标准化、系统化的财务数据分析模板,内含资产负…

基本定时器

1.简介 1. 基本定时器 TIM6 和 TIM7 包含一个 16 位自动重载计数器 2. 可以专门用于驱动数模转换器 (DAC), 用于触发 DAC 的同步电路 3. 16 位自动重载递增计数器 4. 16 位可编程预分频器 5. 计数器溢出时, 会触发中断/DMA请求 从上往下看 1.开始RCC供给定时器的时钟 RCC_APB1…

.NET6.0 System.Drawing.Common 通用解决办法

最近有不少小伙伴在升级 .NET 6 时遇到了 System.Drawing.Common 的问题,同时很多库的依赖还都是 System.Drawing.Common ,而 .NET 6 默认情况下只在 Windows 上支持使用,Linux 上默认不支持这就导致在 Linux 环境上使用会有问题,…

python35种绘图函数总结,3D、统计、流场,实用性拉满

文章目录 基础图误差线三维图等高线图场图统计图非结构坐标图 基础图 下面这8种图像一般只有两组坐标,直观容易理解。 函数坐标参数图形类别plotx,y曲线图stackplotx,y散点图stemx,y茎叶图scatterx,y散点图polarx,y极坐标图stepx,y步阶图barx,y条形图barhx,y横向条…

Electron 报gpu_process_host.cc(951)] GPU process launch faile错误

解决方法,在入口js文件中,添加如下代码: app.commandLine.appendSwitch(no-sandbox)

8.3.tensorRT高级(3)封装系列-tensor封装,索引计算,内存标记及自动复制

目录 前言1. Tensor封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-tensor封装,索引计算&a…

定向流量卡怎么没人买了呢?你知道定向流量卡有多坑吗?

在购买流量卡的时候大家可能都注意了,市面上的流量卡有三种,定向流量卡,通用流量卡,通用流量定向流量卡,据小编了解,现在越来越多的人比较喜欢购买后两者,而关注定向流量卡越来越少了。 其实用过…

7.11 Java方法重写

7.11 Java方法重写 这里首先要确定的是重写跟属性没有关系,重写都是方法的重写,与属性无关 带有关键字Static修饰的方法的重写实例 父类实例 package com.baidu.www.oop.demo05;public class B {public static void test(){System.out.println("这…

clickhouse(十四、分布式DDL阻塞及同步阻塞问题)

文章目录 一、分布式ddl 阻塞、超时现象验证方法解决方案 二、副本同步阻塞现象验证解决方案 一、分布式ddl 阻塞、超时 现象 在clickhouse 集群的操作中,如果同时执行一些重量级变更语句,往往会引起阻塞。 一般是由于节点堆积过多耗时的ddl。然后抛出…

机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识

机器学习笔记之优化算法——Baillon Haddad Theorem简单认识 引言 Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem简单认识证明过程证明:条件 1 ⇒ 1 \Rightarrow 1⇒ 条件 2 2 2证明:条件 3 ⇒ 3 \Rightarrow 3⇒条件 1…

YOLO目标检测——动漫头像数据集下载分享

动漫头像数据集是用于研究和分析动漫头像相关问题的数据集,它包含了大量的动漫风格的头像图像。动漫头像是指以动漫风格绘制的虚构人物的头像图像,常见于动画、漫画、游戏等媒体。 数据集点击下载:YOLO动漫头像数据集50800图片.rar

mysql之host is blocked问题

程序上线一段时间之后,更新程序总是遇到这个问题 每次都是重启几次程序,或者执行 flush hosts; 毕竟指标不治本,抽出时间决定分析一下问题,查阅了几篇博客。(感谢这几位大佬) https://blog.51cto.com/u_…

SpringCloud学习笔记(二)_Eureka注册中心

一、Eureka简介 Eureka是一项基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client&#xff…

入耳式无线耳机哪个款式好?无线蓝牙耳机音质排行榜

本着要买就认认真真的挑选一台的想法。和有线耳机相比,无线耳机确实有一定优势,比如说它的实用性明显要高不少。那么如何挑选,一款合适自己的耳机呢,首先,还是挑选出当前的热门款式,和各种网红推荐款&#…

Android Studio实现解析HTML获取json,解析json图片URL,将URL存到list,进行瀑布流展示

目录 效果build.gradle(app)添加的依赖(用不上的可以不加)AndroidManifest.xml错误activity_main.xmlitem_image.xmlMainActivityImage适配器ImageModel 接收图片URL 效果 build.gradle(app)添加的依赖&…

网络安全设备篇——加密机

加密机是一种专门用于数据加密和解密的网络安全设备。它通过使用密码学算法对数据进行加密,从而保护数据的机密性和完整性。加密机通常被用于保护敏感数据,如金融信息、个人身份信息等。 加密机的主要功能包括: 数据加密:加密机使…

安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析

如何禁止安装某软件。这里以好课帮app为例做个演示步骤说明。这个博文的目的在于可以阻止他人用手机安装你指定的一些软件。 💔💔💔首先手机上安装好课帮这个软件。打开应用详情找到包名。或者使用第三方工具打开获取这个软件的包名。记住是…