![](https://img-blog.csdnimg.cn/b7cca267895644038d583389c9da1b0d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 93
Redis 从入门到精通。
奥特迦
越努力,越幸运。
展开
-
【Redis】Redis 是如何保证高可用的?(背诵版)
其中一个节点 node 向另⼀个节点 node (指定 ip 和 port)发送 CLUSTER MEET 命令,这样就可以让两个节点进⾏握⼿(handshake),当握⼿成功后,node 节点就会将指定 ip 和 port 的节点添加到 node 节点当前所在的集群中。另外受限于硬件和成本,拓展内存的成本太⼤,⽐如拓展到 1T 内存。从节点加载 RDB 完成后,master 将 replication buffer 缓冲区的数据发送到从节点,slave 接收并执⾏,从节点同步⾄主节点相同的状态,保证。原创 2023-03-18 13:35:32 · 2315 阅读 · 25 评论 -
【Redis】高可用架构之Cluster集群和分⽚
主从模式哨兵模式。解决了:在Redis实例发生故障时,具备主从自动切换、故障转移的能力,最终保证服务的高可用。随着我们业务规模的不断扩展,用户量膨胀,并发量持续提升,原有的主从架构,已不足以支撑。Redis并发量10万 / 每秒 ,但是有些业务需要 100万的 QPS数据量,我们普通机器 16~256g,而我们的业务需要500g并发量大了 -> 主从复制解决主从稳定性 -> 哨兵解决单节点的写能力、存储能力、动态扩容都很麻烦 -> 集群 Cluster 解决。可扩展性高可用性负载均衡错误恢复。原创 2023-03-15 10:24:08 · 1779 阅读 · 43 评论 -
【Redis】高可用架构之哨兵模式 - Sentinel
Redis 主从复制 + 读写分离。为Redis 配置主从模式,可以大幅度提高 Redis 的可用性,减少甚至避免 Redis 服务发生宕机的可能。故障隔离和恢复:无论主节点或者从节点宕机,其他节点依然可以保证服务的正常运行,并可以手动切换主从。读写隔离:Master 节点提供写服务,Slave 节点提供读服务,分摊流量压力,均衡流量的负载。提供高可用保障:主从模式是高可用的最基础版本,也是哨兵模式和 cluster模式实施的前置条件。尽管 Redis 主从模式已经做的足够多了,但其还是存在不小的问题。原创 2023-03-13 20:41:27 · 2610 阅读 · 45 评论 -
【Redis】Redis 主从复制 + 读写分离
Redis 的数据持久化技术,可以解决机器宕机,数据丢失的问题,并没有从根本上解决 Redis 的可用性。我们需要的是解决 Redis 的高可用,减少甚至避免 Redis 服务发生宕机的可能,来从根本上解决数据丢失问题。Redis 数据持久化:AOF和RDB主从复制的作用一个是为分担读写压力,均衡负载,另一个是为了保证部分实例宕机之后服务的持续可用性,所以 Redis 演变出主从架构和读写分离。建立连接的阶段、数据同步的阶段、基于长连接的命令传播阶段。数据同步可以分为全量复制和部分复制。原创 2023-03-12 16:35:19 · 2060 阅读 · 8 评论 -
【Redis】Redis 如何实现分布式锁
分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。原创 2023-03-04 18:30:08 · 1771 阅读 · 21 评论 -
【Redis】什么是缓存与数据库双写不一致?怎么解决?
在实际开发中,开发人员使用 “缓存 + 过期时间” 的策略来实现加速数据读写和内存使用率,这种策略能满足大多数业务场景。但还是会有一些问题:当前 key 是一个热点 key(某时间管理大师登顶微博热搜第一),并发量非常大;在缓存失效瞬间,重建缓存不能在短时间完成(可能是一个负责业务场景,需要经过复杂的计算、多次IO、多次服务之间调用等等),有大量线程来重建缓存,造成后端负载加大,甚至可能会让应用崩溃。下面一起看一下热点缓存重建场景下的解决方案。原创 2023-02-28 21:57:53 · 2092 阅读 · 18 评论 -
【Redis】一文搞懂 Redis 中的缓存穿透、缓存击穿、缓存雪崩及其解决方案
缓存穿透是指客户端查询一个缓存、数据库都不存在的数据,导致客户端每次请求数据都会透过缓存,直接查询数据库,返回 null 给客户端。如果有恶意攻击者不断请求系统中不存在的数据,会导致短时间大量请求落在数据库上,造成数据库压力过大,甚至击垮数据库系统。缓存击穿是指,当缓存中的某个热点数据(key)过期了,在该热点数据重新载入之前,有大量的请求穿过缓存,直接查询数据库。这种情况会导致数据库压力瞬间骤增,造成大量请求阻塞,甚至直接挂掉。缓存雪崩是指,当缓存中有大量的 key 在同一时刻过期,或者。原创 2023-02-26 21:14:38 · 1168 阅读 · 18 评论 -
【Redis】Redis 的过期策略以及内存淘汰机制详解
hz 默认是 10。惰性删除不是去主动删除,而是在你要获取某个 key 的时候,Redis 会先去检测一下这个 key 是否已经过期,如果没有过期则返回给你,如果已经过期了,那么 Redis 会删除这个 key,不会返回给你。Slave 在读取过期键时,不会做判断删除操作,而是继续返回该键对应的值,只有当 Master 发送 DEL 通知,Slave 才会删除过期键,这是统一、中心化的键删除策略,保证主从服务器的数据一致性。Master 载入 RDB 时,文件中的未过期的键会被正常载入,过期键则会被忽略。原创 2023-02-23 21:26:49 · 4497 阅读 · 29 评论 -
【Redis】- Redis 7.0 Multi Part AOF的设计和实现
顾名思义,MP-AOF就是将原来的单个AOF文件拆分成多个AOF文件。BASE:表示基础AOF,它一般由子进程通过重写产生,该文件最多只有一个。**INCR:**表示增量AOF,它一般会在AOFRW开始执行时被创建,该文件可能存在多个。HISTORY:表示历史AOF,它由BASE和INCR AOF变化而来,每次AOFRW成功完成时,本次AOFRW之前对应的BASE和INCR AOF都将变为HISTORY,HISTORY类型的AOF会被Redis自动删除。转载 2023-01-19 11:34:53 · 281 阅读 · 2 评论 -
【Redis】 - Redis 6.0 新特性之客户端缓存
antirez 写了一篇有关客户端缓存设计的想法:《antirez 认为,Redis 接下来的一个重点是配合客户端,因为客户端缓存显而易见的可以减轻 Redis 的压力,速度也快很多。实际上,几乎每个大公司都有实现这种应用端缓存的机制,antirez 想通过 server 端的一些设计来减少客户端缓存实现的复杂度和成本,甚至不惜在 Redis 协议上做修改。原创 2023-01-18 14:32:46 · 1376 阅读 · 6 评论 -
【Redis】 - Redis 6.0 新特性之多线程模型
在执行命令阶段:Redis是单线程来执行命令的,每一条到达读服务端的命令并不会立即执行,所有的命令都会进入一个 socket 任务队列中,当 socket 可读则交给单线程事件分发器逐个被执行,即一个线程处理所有网络请求。如下图所示:从Redis 4.0 以后并不是严格意义上的单线程,除了主线程外,Redis 也有后台线程或子进程处理一些其他较为缓慢的操作(例如:无用连接的释放、慢IO访问和一些其他类似操作 - 清理脏数据、生成快照、AOF重写等)。原创 2023-01-17 10:51:06 · 2924 阅读 · 24 评论 -
【Redis】 - Redis持久化:AOF和RDB
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是把Redis进程内的数据转化为写命令同步到新AOF文件的过程。原创 2022-12-22 15:07:10 · 913 阅读 · 4 评论 -
【Redis】 - Redis为什么这么快?
Redis的底层数据结构一共有六种,分别是:内存直接由 CPU 控制,也就是 CPU 内部集成的内存控制器,所以说内存是直接与 CPU 对接,享受与 CPU 通信的最优带宽。Redis 将数据存储在内存中,读写操作不会因为磁盘的 IO 速度限制。CPU 不是 Redis 的瓶颈,Redis 的瓶颈最有可能是机器内存的大小或者网络带宽。在计算机的世界中,CPU的速度是远大于内存的速度的,同时内存的速度也是远大于硬盘的速度。Redis 的操作都是基于内存的,绝大部分请求是纯粹的内存操作,非常迅速。Redis原创 2022-12-07 15:08:49 · 505 阅读 · 1 评论 -
Redis - Redisson lock和tryLock原理解析
Redisson 分布式锁原理1. 工具类package com.meta.mall.common.utils;import lombok.extern.slf4j.Slf4j;import org.redisson.api.RLock;import org.redisson.api.RedissonClient;import org.springframework.stereotype.Component;import javax.annotation.Resource;import原创 2022-05-14 10:30:18 · 10850 阅读 · 0 评论 -
Redis - 在电商购物车场景下的实战分析
1. 电商购物车写多读多场景分析2. 购物车的多种redis数据结构实战3. 购物车的阈值检查与重复加入逻辑4. 购物车加入商品多线程并发问题解决5. 购物车的查询、更新与选中功能原创 2022-04-07 10:04:02 · 2038 阅读 · 0 评论 -
Redis--缓存设计与性能优化
目录一. 多级缓存架构二. 缓存设计1. 缓存雪崩(1)描述:(2)解决方案:2. 缓存穿透(1)描述:(2)解决方案:3. 缓存击穿(1)描述:(2)解决方案:一. 多级缓存架构二. 缓存设计1. 缓存雪崩(1)描述:缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至宕机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。(2)解决方案:缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。如原创 2021-01-22 14:07:13 · 277 阅读 · 0 评论 -
Redis--五种基础数据结构及应用场景
目录1. string (字符串)1.1 string的常用操作1.1.1 键值对1.1.2 操作批量键值对1.1.3 过期和 set 命令扩展1.1.4 原子操作1.2 string的应用场景2. hash (字典)Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。1. string (字符串)字符串 string 是 Redis 最简单的数据结构。Redis 所有的数据结构都是以唯一转载 2020-12-31 14:50:35 · 923 阅读 · 0 评论 -
Redis--安装与配置(Linux与Windows)
目录1. Linux下安装Redis1.12. Windows下安装Redis1. Linux下安装Redis1.12. Windows下安装Redis原创 2020-12-30 15:20:25 · 272 阅读 · 1 评论