当前位置: 首页 > news >正文

[缓存] - 2.分布式缓存重磅中间件 Redis

1. 高性能

尽量使用短key

不要存过大的数据

避免使用keys *:使用SCAN,来代替

在存到Redis之前压缩数据

设置 key 有效期

选择回收策略(maxmemory-policy)

减少不必要的连接

限制redis的内存大小(防止swap,OOM)

slowLog

使用pipline批量操作数据

2. 高可用

2.1 单机版的高可用

数据持久化:AOF(WAL) & RDB

2.2 Replication-Sentinel模式

也就是哨兵模式。哨兵能对节点进行监控,提醒,自动故障迁移。

缺点:主从模式,切换需要时间,可能会丢数据,而且没有解决 master 写的压力;存储性能没办法横向扩展。

适用场景:缓存大小 < 10G时建议使用一主多从的哨兵模式。 从节点的数量,根据qps来扩展,比如10WQPS,可以有3-4个从节点(只能提高读操作的qps,写的qps不能扩展)。

架构图:

 2.3 Redis-Cluster模式

redis在3.0上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,也就是说每台 Redis 节点上存储不同的数据。

Gossip协议维护节点的元数据信息,进行节点间的信息同步。P2P去中心化的模式。最终一致性。

每个分区有一个master和若干slaver组成。

缺点:对于大型集群来说, 例如200 个使用 3.2.8 版本节点搭建的 Redis 集群,在没有任何客户端请求的情况下,每个节点仍然会产生 40Mb/s 的流量(gossip协议), 不建议使用官方的 Redis Cluster。

适用场景:如果系统的缓存大小<2000G, 主节点数<200个,建议使用Redis Cluster模式

2.4 Proxy模式

适用于主节点数量 > 200的情况下。有Codis Proxy和Twemproxy Proxy来年各种中间件模式。

数据分片算法:

(1)Codis 代理分片

(2)Twemproxy 代理分片

2.4.1 Redis数据分片

槽位,共16384个槽位。

所有的键根据哈希函数映射到0 ~ 16383,计算公式:slot = CRC16(key)&16383

3. 主从复制

哨兵模式和集群模式,都需要进行主从复制。

核心流程:

建立连接,数据同步,命令传播

4. 分布式缓存的常见问题

4.1 数据丢失

1.AOF异步刷盘

2.master和slave的数据同步是异步的

5. 数据预热 & 冷热分离

6. 缓存选型

由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis。虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。

7. 缓存过期

7.1 过期策略

TTL, LFU, LRU, Random

7.2 过期删除策略

  • 定期删除:将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。
  • 惰性删除:所谓惰性策略就是在客户端访问这个key的时候,redis对key的过期时间进行检查,如果过期了就立即删除,不会给你返回任何东西。

定期删除是集中处理,惰性删除是零散处理。

相关文章:

[缓存] - 2.分布式缓存重磅中间件 Redis

1. 高性能 尽量使用短key 不要存过大的数据 避免使用keys *&#xff1a;使用SCAN,来代替 在存到Redis之前压缩数据 设置 key 有效期 选择回收策略(maxmemory-policy) 减少不必要的连接 限制redis的内存大小&#xff08;防止swap&#xff0c;OOM&#xff09; slowLog …...

1191. 家谱树(拓扑排序,模板题)

活动 - AcWing 有个人的家族很大&#xff0c;辈分关系很混乱&#xff0c;请你帮整理一下这种关系。 给出每个人的孩子的信息。 输出一个序列&#xff0c;使得每个人的孩子都比那个人后列出。 输入格式 第 11 行一个整数 n&#xff0c;表示家族的人数&#xff1b; 接下来 …...

CSS之BFC

BFC概念 BFC&#xff08;Block Formatting Context&#xff09;即块级格式化上下文&#xff0c;是Web页面的可视CSS渲染的一部分。它是一个独立的渲染区域&#xff0c;让其中的元素在布局上与外部的元素互不影响。简单来说&#xff0c;BFC提供了一个环境&#xff0c;允许内部的…...

2024 年合并 PDF 文件的免费 PDF 合并软件榜单

合并 PDF 是当今人们寻找的最重要的功能之一。在本文中&#xff0c;您将了解前五名的 PDF 合并软件以及详细的介绍&#xff0c;以便您选择最佳的。如果您想将所有重要信息都放在一个文件中&#xff0c;而不是在不同的文件中查找&#xff0c;那么合并 PDF 文件是必要的。通过这种…...

Python教程56:海龟画图turtle画kitty猫

---------------turtle源码集合--------------- Python教程91&#xff1a;关于海龟画图&#xff0c;Turtle模块需要学习的知识点 Python教程51&#xff1a;海龟画图turtle画&#xff08;三角形、正方形、五边形、六边形、圆、同心圆、边切圆&#xff0c;五角星&#xff0c;椭…...

c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。 在前面讨论传值和传址的时候&#xff0c;我们就已经开始使用了指针来传递地址。 在正式介绍指针之前&#xff0c;我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道&#xff0c;每个房子都有自己的地址&#…...

pwn学习笔记(3)ret2syscall

pwn学习笔记&#xff08;3&#xff09; ROP原理&#xff1a; ​ ROP(Return Oriented Programming)返回导向编程&#xff0c;主要思想是通过在程序中已有的小片段&#xff08;gadgets&#xff09;来改变某些寄存器或者变量的值&#xff0c;从而控制程序的执行流程。 栈溢出–…...

React18原理: 生命周期中特别注意事项

概述 生命周期就是一个组件从诞生到销毁的全过程(包含错误捕获&#xff0c;这里暂且不聊这个)react 在组件的生命周期中注册了一系列的钩子函数支持开发者在其中嵌入代码&#xff0c;并在适当的时机运行生命周期本质上就是组件中的钩子函数&#xff0c;主要有三个主要的钩子 挂…...

【C语言】Linux内核bind系统调用代码

一、Linux 4.9内核bind系统调用代码注释 int __sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen) {struct socket *sock; // 定义socket对象的指针struct sockaddr_storage address; // 用于存储从用户空间复制过来的地址int err…...

Ubuntu下Anaconda+PyCharm搭建PyTorch环境

这里主要介绍在condapytorch都正确安装的前提下&#xff0c;如何通过pycharm建立开发环境&#xff1b; Ubuntu下AnacondaPyCharm搭建PyTorch环境 系统环境&#xff1a;Ubuntu22.04 conda: conda 23.11.0 pycharm:如下 condapytorch的安装教程介绍&#xff0c;请点击这里&…...

酷开科技荣获“消费者服务之星”称号后的未来展望

恭喜酷开科技荣获2023年第四季度黑猫平台“消费者服务之星”称号&#xff01;这是对酷开科技长期以来坚持用户至上、用心服务的肯定和认可。作为OTT行业的佼佼者&#xff0c;酷开科技一直秉承着“以用户为中心”的服务理念&#xff0c;不断追求卓越品质&#xff0c;为用户提供更…...

UVA1449 Dominating Patterns 题解

UVA1449 Dominating Patterns 题解 板子题诶。 解法 AC 自动机模板题&#xff0c;因为数据范围比较小&#xff0c;所以不加拓扑排序优化建图即可通过本题。这里简单介绍一下拓扑排序优化建图。 在查找时&#xff0c;每次都暴力的条 f a i l fail fail 指针是很消耗时间的&…...

【C语言】数据结构#实现堆

目录 &#xff08;一&#xff09;堆 &#xff08;1&#xff09;堆区与数据结构的堆 &#xff08;二&#xff09;头文件 &#xff08;三&#xff09;功能实现 &#xff08;1&#xff09;堆的初始化 &#xff08;2&#xff09;堆的销毁 &#xff08;3&#xff09;插入数据 …...

AES加密中的CBC和ECB

目录 1.说明 2.ECB模式&#xff08;base64&#xff09; 3.CBC模式 4.总结 1.说明 AES是常见的对称加密算法&#xff0c;加密和解密使用相同的密钥&#xff0c;流程如下&#xff1a; 主要概念如下&#xff1a; ①明文 ②密钥 用来加密明文的密码&#xff0c;在对称加密算…...

【C++】类和对象(四)

前言&#xff1a;在类和对象中&#xff0c;我们走过了十分漫长的道路&#xff0c;今天我们将进一步学习类和对象&#xff0c;类和对象这块荆棘地很长&#xff0c;各位一起加油呀。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&a…...

XGB-5: DART Booster

XGBoost 主要结合了大量的回归树和一个小的学习率。在这种情况下&#xff0c;早期添加的树是重要的&#xff0c;而晚期添加的树是不重要的。 Vinayak 和 Gilad-Bachrach 提出了一种将深度神经网络社区的 dropout 技术应用于梯度提升树的新方法&#xff0c;并在某些情况下报告了…...

HiveSQL——不使用union all的情况下进行列转行

参考文章&#xff1a; HiveSql一天一个小技巧&#xff1a;如何不使用union all 进行列转行_不 union all-CSDN博客文章浏览阅读881次&#xff0c;点赞5次&#xff0c;收藏10次。本文给出一种不使用传统UNION ALL方法进行 行转列的方法,其中方法一采用了concat_wsposexplode()方…...

Python环境下基于指数退化模型和LSTM自编码器的轴承剩余寿命预测

滚动轴承是机械设备中关键的零部件之一&#xff0c;其可靠性直接影响了设备的性能&#xff0c;所以对滚动轴承的剩余使用寿命(RUL)进行预测是十分必要的。目前&#xff0c;如何准确地对滚动轴承剩余使用寿命进行预测&#xff0c;仍是一个具有挑战的课题。对滚动轴承剩余寿命评估…...

无人机竞赛视觉算法开发流程开源计划(询问大家意见)

本科中参加过一系列的无人机机器人竞赛&#xff0c;像电赛、工训赛、机器人大赛这些&#xff0c;有一些比较常用的方案打算开源一下。现在读研了&#xff0c;也算是对本科的一个总结&#xff0c;但是还是想看看大家意见&#xff0c;大家有什么需求可以在评论区说&#xff0c;我…...

DMA直接内存访问,STM32实现高速数据传输使用配置

1、DMA运用场景 随着智能化、信息化的不断推进&#xff0c;嵌入式设备的数据处理量也呈现指数级增加&#xff0c;因此对于巨大的数据量处理的情况时&#xff0c;必须采取其它的方式去替CPU减负&#xff0c;以保证嵌入式设备性能。例如SD卡存储器和音视频、网络高速通信等其它情…...

从零搭建RAG知识库系统:手把手带你玩转检索增强生成,解决大模型三大痛点!

在探索AI落地应用的过程中&#xff0c;RAG知识库系统是一项无法回避的关键技术。近期我开始系统学习这一领域&#xff0c;并决定以笔记形式持续记录和分享学习心得&#xff0c;一方面督促自己深入理解&#xff0c;另一方面也希望能与大家共同探讨、相互启发。 本文整理自我对RA…...

FlexASIO音频优化实战指南:从延迟卡顿到高保真体验的转型方案

FlexASIO音频优化实战指南&#xff1a;从延迟卡顿到高保真体验的转型方案 【免费下载链接】FlexASIO A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME. 项目地址: https://g…...

2条普通程序员的靠谱出路:AI开发与出海SEO,让AI成为你的助力而非威胁

文章分析了适合普通程序员的两种新出路&#xff1a;转型AI开发和出海做SEO。这两种路径均满足三大条件&#xff1a;市场空间大、AI能赋能工作、有标准执行路径。AI开发是配合业务团队开发AI工作流&#xff0c;可通过前端专精→涉猎AI应用开发→魔改开源项目逐步转型。出海SEO则…...

前端面试高频考点总结(不仅有考点,还有对应解答)

2026年 AI面试 经验分享 前端面试核心要点 技术考察转向实际场景与新兴技术&#xff0c;重点包括&#xff1a; JavaScript/TypeScript核心机制与编码能力React/Vue3的高阶特性与原理工程化与性能优化体系网络/安全与综合性场景题 3-5年经验者需突出&#xff1a; 技术原理深度&a…...

795. 广告标识工厂哪家上门维修最及时?

在当今商业社会&#xff0c;广告标识对于企业的品牌展示和宣传起着至关重要的作用。然而&#xff0c;广告标识在使用过程中难免会出现各种问题&#xff0c;这就需要及时的上门维修服务。那么&#xff0c;广告标识工厂哪家上门维修最及时呢&#xff1f;今天就为大家推荐河北兴盛…...

iMeta 5卷1期封底:肠・太极

点击蓝字 关注我们肠・太极。本封面设计灵感来自盘龙、太极阴阳等中国传统文化元素。外周盘龙形若肠道&#xff0c;象征完整的肠道屏障结构&#xff1b;中心太极图寓意肠道微环境的动态平衡。太极两仪分别对应肠上皮细胞线粒体与肠道菌群这两大核心调控者&#xff0c;诠释了唯有…...

专注核心创新:用快马AI生成openclaw101开发效率工具链

在开发机械臂控制相关的项目时&#xff0c;我发现很多时间都花在了重复造轮子上。特别是做openclaw101这类机械爪的仿真或实体开发时&#xff0c;每次都要从零开始写轨迹规划、数据滤波这些基础功能。最近尝试用InsCode(快马)平台整理了一套工具链&#xff0c;效率提升非常明显…...

掌握Agentic RAG:动态智能代理,提升大模型学习与实战效率,CSDN小白程序员必收藏!

掌握Agentic RAG&#xff1a;动态智能代理&#xff0c;提升大模型学习与实战效率&#xff0c;CSDN小白程序员必收藏&#xff01; Agentic RAG技术通过引入自主AI代理&#xff0c;解决了传统RAG系统依赖静态数据的局限性&#xff0c;实现实时检索最新数据&#xff0c;灵活调整策…...

Cursor滑跪开源技术报告:Kimi基模这样微调能干翻Claude

Cursor滑跪开源技术报告&#xff1a;Kimi基模这样微调能干翻Claude 导读&#xff1a;当"套壳"成为一门技术活&#xff0c;Cursor用一份技术报告告诉我们&#xff1a;基于中国开源模型Kimi K2.5&#xff0c;通过持续预训练异步强化学习&#xff0c;完全可以在代码Agen…...

如何高效解决Cursor试用限制?完整实用的解决方案指南

如何高效解决Cursor试用限制&#xff1f;完整实用的解决方案指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We h…...