redis主从模型与对象模型

redis淘汰策略

首先我们要明确这里说的淘汰策略是淘汰散列表中的key-value,而不是value中的各个数据结构

过期key中

volatile-lru
从设置了过期时间的键中,移除最近最少使用的键(LRU算法)。适合需要优先保留高频访问数据的场景。

volatile-lfu
从设置了过期时间的键中,移除使用频率最低的键(LFU算法)。适合需要根据访问频率淘汰的场景。

volatile-ttl
从设置了过期时间的键中,优先移除剩余存活时间(TTL)最短的键。适合需要优先淘汰即将过期数据的场景。

volatile-random
从设置了过期时间的键中随机移除键。适合对淘汰顺序无特殊要求的场景。

所有key

allkeys-lru
从所有键中移除最近最少使用的键,无论是否设置过期时间。适用于缓存系统,优先保留热点数据。

allkeys-lfu
从所有键中移除使用频率最低的键。适用于需要严格按访问频率管理的缓存。

allkeys-random
从所有键中随机移除键。适用于数据重要性均匀分布的场景。

禁止淘汰

allkeys-random
从所有键中随机移除键。适用于数据重要性均匀分布的场景。

持久化

因为redis数据库是内存数据库,所以在 关闭系统时如果没有把数据存在磁盘中就会失去数据。

Redis提供两种主要的持久化方式:RDB(Redis Database)和AOF(Append Only File)。两种方式各有优缺点,可根据实际需求选择或结合使用。

AOF持久化

aof 日志存储的是 Redis 服务器的顺序指令序列,aof 日志只记录对内存修改的指令记录;通过重放(replay)aof 日志中指令序列来恢复 Redis 当前实例的内存数据结构的状态;

AOF分类

always:每次操作都进行同步

every_sec:每秒都进行同步

no:没有特定同步策略,根据cache line刷到主存的策略进行持久化

AOF-rewrite

aof 持久化策略会持久化所有修改命令;里面的很多命令其实可以合并或者删除; aof rewrite 在 aof 的基础上,满足一定策略则 fork 进程,根据当前内存状态,转换成一系列的 redis 命令,序列化成一个新的 aof 日志文件中,序列化完毕后再将操作期间发生的增量 aof 日志 追加到新的 aof 日志文件中,追加完毕后替换旧的 aof 日志文件;以此达到对 aof 日志瘦身的目 的;

优缺点

优点:数据可靠,丢失较少,持久化过程代价低

缺点:aof文件过大,数据恢复慢

RDB持久化

基于 aof 或 aof 复写文件大的缺点,rdb 是一种快照持久化;它通过 fork 主进程,在子进程中将内 存当中的数据键值对按照存储方式持久化到 rdb 文件中;rdb 存储的是经过压缩的二进制数据;

先fork进程防止redis进行增删查改影响,进行写时复制,此时fork后的子进程的虚拟地址指向的物理存储空间和父进程一样,这时父进程触发写保护中断,如果有服务器连接redis进行操作就会使父进程指向新的物理内存地址。

优缺点

优点:rdb文件小,数据恢复快

缺点:数据丢失多,持久化过程代价高

redis主从复制

主要用来实现 redis 数据的可靠性;防止主 redis 所在磁盘损坏,造成数据永久丢失;

master是主redis,两个从redis,从redis会连接主redis,获取最新的数据,如果

全量数据同步

增量数据同步

redis哨兵模式

哨兵会检测主redis和从redis是否正常,如果主redis出现差错,哨兵会从从redis中选一个数据最新的做主redis并把信息传递给client

redis cluster集群

Redis cluster 将所有数据划分为 16384(2的14次方)个槽位,每个 redis 节点负责其中一部分槽位。 cluster 集群是一种去中心化的集群方式; 如图,该集群由三个 redis 节点组成,每个节点负责整个集群的一部分数据,每个节点负责的数据 多少可能不一样。这三个节点相互连接组成一个对等的集群,它们之间通过一种特殊的二进制协议 交互集群信息; 当 redis cluster 的客户端来连接集群时,会得到一份集群的槽位配置信息。这样当客户端要查找某 个 key 时,可以直接定位到目标节点。 客户端为了可以直接定位(对 key 通过 crc16 进行 hash 再对 取余)某个具体的 key 所在节 点,需要缓存槽位相关信息,这样才可以准确快速地定位到相应的节点。同时因为可能会存在客户 端与服务器存储槽位的信息不一致的情况,还需要纠正机制(通过返回 -MOVED 3999 127.0.0.1:6479 ,客户端收到后需要立即纠正本地的槽位映射表)来实现槽位信息的校验调整。 另外,redis cluster 的每个节点会将集群的配置信息持久化到配置文件中,这就要求确保配置文件 是可写的,而且尽量不要依靠人工修改配置文件;

更多资料在:https://github.com/0voice查询

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

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

相关文章

快速搭建开源网页编辑器(vue+TinyMCE)

文章目录 Tiny MCE 安装方法 1. 安装node.js 2. 创建vue3项目 3. 安装TinyMCE依赖并使用 (1)在component文件夹创建Editor.vue文件 (2)编辑App.vue文件 (3)运行项目 (4)获取并设置API key (5)设置中文菜单 Tiny MCE 安装方法 1. 安装node.js 下载地址:https://nod…

ADK【4】内置前端调用流程

文章目录说明ADK内置前端ADK内置前端开启流程说明 本文学自赋范社区公开课,仅供学习和交流使用,不用作任何商业用途! ADK内置前端 ADK作为最新一代Agent开发框架,不仅功能特性非常领先,而且还内置了非常多的工具&am…

LLMs之GPT-5:OpenAI 发布更智能、更快速、更有用的 AI 模型—内置思考能力,赋能人人专家级智能—技术突破、性能评估与安全保障全面解读

LLMs之GPT-5:OpenAI 发布更智能、更快速、更有用的 AI 模型—内置思考能力,赋能人人专家级智能—技术突破、性能评估与安全保障全面解读 导读:2025年8月7日,OpenAI 发布了 GPT-5,这是他们目前最智能的 AI 系统。它在编…

Java 中操作 R 的全面指南

Java 中操作 R 的全面指南 引言 Java作为一种广泛使用的编程语言,具有跨平台、高性能、可扩展等特点。随着大数据和机器学习的兴起,Java在处理和分析复杂数据集方面发挥着越来越重要的作用。R语言,作为一种专门用于统计计算和图形展示的语言,同样在数据分析领域有着举足轻…

数据结构——优先级队列(PriorityQueue):一文解决 Top K 问题!

目录 1.优先级队列 2. 堆的概念 3. 堆的存储方式 4. 堆的创建 4.1 向下调整 4.2 堆的创建 4.3 堆的插入 4.4 堆的删除 5.用堆模拟实现优先级队列 6.常用接口的介绍 6.1 PriorityQueue 的特性 6.2 PriorityQueue 的方法 7. Top K问题 1.优先级队列 队列是一种先进先…

C语言自定义类型深度解析:联合体与枚举

在C语言中,自定义类型为数据组织提供了极大的灵活性。除了常用的结构体,联合体(共用体)和枚举也是非常重要的自定义类型。本文将结合实例,详细解析联合体和枚举的特性、用法及实际应用场景。 一、联合体(Un…

Numpy科学计算与数据分析:Numpy数据分析基础之统计函数应用

Numpy统计函数实战:数据的聚合与分析 学习目标 通过本课程的学习,学员将掌握Numpy中用于统计分析的关键函数,如求和(sum)、平均值(mean)、标准差(std)等,能够熟练地在实际数据集中应用这些函数进行数据的聚合与分析。 相关知识…

从引导加载程序到sysfs:Linux设备树的完整解析与驱动绑定机制

摘要本报告旨在为嵌入式Linux开发者详细梳理设备树(Device Tree, DT)在系统启动中的完整解析流程。报告将从引导加载程序(Bootloader)如何准备和传递设备树二进制文件(DTB)开始,逐步深入到内核如…

基于深度学习的污水新冠RNA测序数据分析系统

基于深度学习的污水新冠RNA测序数据分析系统 摘要 本文介绍了一个完整的基于深度学习技术的污水新冠RNA测序数据分析系统,该系统能够从未经处理的污水样本中识别新冠病毒变种、监测病毒动态变化并构建传播网络。我们详细阐述了数据处理流程、深度学习模型架构、训练…

宝塔面板配置Nacos集群

一、环境准备 准备三台及以上的服务器,我这里准备了3台服务器,172.31.5.123~125;分别安装好宝塔面板,软件商店里安装nacos;二、Nacos集群配置 配置数据库连接:​ 进入每台服务器上 Nacos 解压后…

Spring Boot 3.x 全新特性解析

Spring Boot 是企业级 Java 开发中最常用的框架之一。自 Spring Boot 3.x 发布以来,其引入的一系列重大变更与优化,为开发者提供了更现代、更高效的开发体验。本文将重点解析 Spring Boot 3.x 的关键特性及其对项目架构的影响。 一、基于 Jakarta EE 10 …

2025.8.10总结

今天晚上去跑了2公里,跑完还挺爽的,然后花了1.5个小时去公司刷题,没有进行限时练,花了一周的时间才做完这题,共找了20个bug,虽然没有进行限时练,但我仿佛对测试技术掌握得更好了,知道…

qt中实现QListWidget列表

使用最基本的QListWidgetItem来创建列表项,具体使用下面setText、setIcon、addItem这三个方法#include "mainwindow.h" #include "ui_mainwindow.h" #include "QDebug"enum CustomRoles {IdRole Qt::UserRole, // 存储IDPhoneR…

nginx-主配置文件

nginx-主配置文件一、主配置文件nginx.conf内容二、修改配置的文件后的操作三、配置虚拟主机的域名1. 修改nignx.conf配置文件2. 新建域名对应的网页根目录3. 重载nginx配置4. 验证一、主配置文件nginx.conf内容 [rootweb1 conf]# cat nginx.conf#user nobody; # nginx woke…

DBSACN算法的一些应用

以下是 DBSCAN 算法在 Python 中的几个典型应用示例,涵盖了基础使用、参数调优和可视化等方面:import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import DBSCAN from sklearn.datasets import make_moons, make_blobs from skl…

java9学习笔记-part1

G1 成为默认垃圾回收器在 Java 8 的时候,默认垃圾回收器是 Parallel Scavenge(新生代)Parallel Old(老年代)。到了 Java 9, CMS 垃圾回收器被废弃了,G1(Garbage-First Garbage Collector&#x…

【github.io静态网页 怎么使用 github.io 搭建一个简单的网页?】

这里是一张展示 GitHub Pages 静态网站架构与部署流程的示意图,可以帮助你更直观理解整个流程。 要使用 github.io(GitHub Pages)搭建一个简单的网页,你可以按照以下步骤操作: 快速入门:个人网站&#xff…

记录一次ubuntu20.04 解决gmock not found问题的过程

在电脑上源码编译moveit,系统是ubuntu20.04,有三个电脑,分别叫做A,B,C好了,A和C都可以很顺畅地走流程编译通过,但是B遇到了gmock not found的问题,一开始没当回事,感觉重装下库,或者…

Java基础编程核心案例:从逻辑到应用

Java编程的核心在于将逻辑思维转化为可执行的代码。本专栏通过8个实用案例,覆盖条件判断、循环结构、数组操作、用户交互等基础知识点,展示如何用Java解决实际问题,从简单游戏到数据计算,逐步构建编程思维。 案例一:剪…

Starlink卫星终端对星策略是终端自主执行的还是网管中心调度的?

以下文章首先来源于Google Gemini的Deep Research的内容,在Deep Research的报告参考了SpaceX公开信息、FCC技术报告、相关专利(如US9906292B2)以及学术研究的综合分析,并参考了RFWirelessWorld和APNIC博客等二次来源。 文章完成之后,前后发给了Grok和deepseek,让Grok和d…