哨兵 架构 模式redis

使用c#实现23种设计模式

使用c#实现23种常见的设计模式 设计模式通常分为三个主要类别: 创建型模式 结构型模式 行为型模式。 这些模式是用于解决常见的对象导向设计问题的最佳实践。 以下是23种常见的设计模式并且提供c#代码案例: 创建型模式: 1. 单例模式(Singleton) public sealed class ......
设计模式 模式

适配器模式的运用

[TOC] # 一、适配器模式的运用 ## 1.1 介绍 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 **例子**:手机充电器(将220v转换为65v的电压),读卡器,笔记本电脑的充电器等,其实就是使用到了适配器模式。 ## 1.2 适配器模 ......
适配器 模式

01 | 基础架构:一条SQL查询语句是如何执行的?

### FAQ #### 画出 MySQL 的基本架构图 ![image.png](https://cdn.nlark.com/yuque/0/2023/png/559966/1686211777836-612d0e7c-7595-44b5-ad5c-9392633de905.png#average ......
语句 架构 基础 SQL 01

关联:Redis I/O模式

Redis使用的是I/O多路复用 首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务,而 I/O 多路复用就是为了解决这 ......
模式 Redis

I/O模式(BIO/NIO/AIO)

I/O过程 对于一次IO访问(这回以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的缓冲区,最后交给进程。所以说,当一个read操作发生时,它会经历两个阶段: 1. 等待数据准备 (Waiting for the data to be ready ......
模式 BIO AIO NIO

Redis系列15:使用Stream实现消息队列(精讲)

[Redis系列1:深刻理解高性能Redis的本质](https://www.cnblogs.com/wzh2010/p/15886787.html "Redis系列1:深刻理解高性能Redis的本质") [Redis系列2:数据持久化提高可用性](https://www.cnblogs.com/w ......
队列 消息 Stream Redis

redis 安装fatal error: jemalloc/jemalloc.h: No such file or directory 错误

转自;https://www.cnblogs.com/oxspirt/p/11392437.html 问题现象: 我第一次安装redis时,没有安装gcc,报错了,然后安装好gcc,后再次执行make命令,安装redis就出现了如上的错误 网上错误解决办法 网上大部分解决办法都是错误的,如下文: ( ......
jemalloc directory 错误 redis fatal

Redis 面试题

## 1. Redis 是什么? Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此**读写速度非常快**,常用于**缓存,消息队列、分布式锁等场景**。 ## 2. Redis 有哪些数据类型? * **5 种基础数据结构**:String(字符串)、List(列表)、Se ......
Redis

九、哨兵机制

哨兵其实是一个运行在特殊模式下的 Redis 进程,所以它也是一个节点。从“哨兵”这个名字也可以看得出来,它相当于是“观察者节点”,观察的对象是主从节点 哨兵节点主要负责三件事情:监控、选主、通知 监控 哨兵会每隔 1 秒给所有主从节点发送 PING 命令,当主从节点收到 PING 命令后,会发送一 ......
哨兵 机制

十、Redis主从复制

读操作:主库、从库都可以接收; 写操作:首先到主库执行,然后,主库将写操作同步给从库。 主从第一次同步 第一阶段,主从库间建立连接、协商同步的过程,主要是为全量复制做准备。从库和主库建立起连接,主库确认回复后,就可以开始同步了。具体来说,从库给主库发送 psync 命令,psync 命令包含了主库的 ......
主从 Redis

十三、Redis并发竞争问题

多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了。或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了 首先使用分布式锁,确保同一时间,只能有一个系统实例在操作某个key 然后修改key的值时,要先判断这值的时间戳是否比缓存里的值的时间戳更靠后, ......
问题 Redis

十一、Redis扩容如何保证哈希一致性

横向扩容,保证哈希一致性 一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形) 下一步将各个服务器使用Hash进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置 接下来使用 ......
一致性 Redis

六、Redis缓冲区

Redis缓冲区有两个应用场景: 在客户端和服务器端之间进行通信时,用来暂存客户端发送的命令数据,或者是服务器端返回给客户端的数据结果; 主从节点间进行数据同步时,用来暂存主节点接收的写命令和数据 客户端缓冲区 是为了解决客户端和服务端请求和处理速度不匹配问题的,它又分为输入和输出缓冲区。 输入缓冲 ......
缓冲区 Redis

七、如何保证 Redis 中的数据不丢失

单机单节点模式使用 AOF 和 RDB 结合的方式 RDB 做镜像全量持久化,AOF 做增量持久化。因为 RDB 会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要 AOF 来配合使用。 Redis 集群模式 1、master 节点持久化 2、Redis断点续传:主从复制过程中,如果 ......
数据 Redis

五、Redis内存消耗

从性能上来说,内存占用过高会引起Reids响应变慢 从高可用上来说,内存过大可能会会引起部分数据丢失,故障恢复变慢 Redis内存消耗主要在于其主进程消耗和子进程消耗。而主进程消耗又主要包括自身内存、对象内存、缓冲区内存、内存碎片五个方面 1、自身内存 指Redis进程自身所占用的内存,这部分内存通 ......
内存 Redis

外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统

外观模式是一种结构型设计模式,它为复杂子系统提供了一个统一的接口,从而使其更易于使用。外观模式隐藏了子系统的复杂性,并将其封装在一个高级接口中。在使用外观模式时,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个组件交互。 ```java // 子系统中的组件 class CPU { pu ......
复杂系统 系统 复杂性 外观 接口

redis应用场景--记录文章,图文,或者视频的浏览次数

在阅读博客文章时,你可以看到一篇文章被阅读的次数,如果使用mysql, 那么在设计article表时,就必须设置一个view_count字段来记录这篇文章被阅读的次数。 但这种方式相比于使用redis,并不是一种好的办法,原因在于,每次更新view_count字段的值都是一个比较费力的过程。 首先, ......
场景 次数 图文 文章 redis

org.springframework.data.redis.RedisSystemException: Redis exception; nested exception is io.lettuce.core.RedisException: java.io.IOException: Connection reset by peer

springBoot + redis. 程序隔一段时间会莫名其妙的报Redis的错误. 报错如下: org.springframework.data.redis.RedisSystemException: Redis exception; nested exception is io.lettuce ......

redis应用场景--实现布隆过滤器

简述布隆过滤器的实现思路: 假设有一个长度为n的比特数组,bit_array,数组里的每一位都是0,对于一个url或者是其他数据,使用hash算法计算出url的散列值,这个散列值当然是一个整数,暂且命名为index,index=index%n,确保index的值小于n,查看bit_array[ind ......
过滤器 场景 redis

工厂方法模式/抽象工厂模式

# 1.工厂方法模式 ## 1. UML ![image](https://img2023.cnblogs.com/blog/2415825/202306/2415825-20230602170556810-998451510.png) 比简单工厂更符合开闭原则,简单工厂依赖具体类,当增加具体类时就 ......
工厂 模式 方法

redis应用场景--游戏排行榜

有序集合也是集合,不同之处在于,集合里的元素可以附带这个分数,元素不能重复,但是分数可以重复,不仅如此,还可以根据分数进行排序。 很多游戏都有玩家得分的排行榜,这个排行榜随时处于变动中。 游戏有很多玩家,可以设计一张表,记录每一个玩家的分数,并根据玩家新一局的分数来更新这张表,当需要获取排行榜前10 ......
场景 排行榜 redis

新项目,不妨采用这种架构分层,很优雅!

大家好,我是飘渺。今天继续更新DDD&微服务的系列文章。 在专栏开篇提到过DDD(Domain-Driven Design,领域驱动设计)学习起来较为复杂,一方面因为其自身涉及的概念颇多,另一方面,我们往往缺乏实战经验和明确的代码模型指导。今天,我们将专注于DDD的分层架构和实体模型,期望为大家落地 ......
新项目 架构

redis 基本数据类型

所有数据都以唯一 key 字符串作为名称,而 value 只是数据类型的差异。所以,针对 key 的命令都是通用的。 方便演示,采用 docker 镜像,可以选择 redis:latest 镜像,这里我选择了带布隆过虑器的 redis 镜像。 docker run -p 6379:6379 --na ......
类型 数据 redis

代理模式:为其他对象提供一种代理以控制对这个对象的访问

代理模式是一种常见的设计模式,它允许一个对象在不改变其行为的情况下,控制对另一个对象的访问。代理模式通常用于保护敏感对象,或者为了延迟实际对象的加载。 在Java中,代理模式有两种形式:静态代理和动态代理。静态代理需要手动编写代理类,而动态代理则可以在运行时自动生成代理类。 > 示例代码:__静态代 ......
对象 模式

redis应用场景--缓存过期时间

缓存可以有效的提高关键数据的获取速度,使得不必要每次查询数据库,避免了数据库被击穿。 主动更新: 需要知道这份数据的实效时间点,然后在那个时间点到来时重新更新数据,可能是查询数据库,也可能是访问第三接口,在获得数据之后,更新redis缓存。 被动更新: 程序每次都去redis获取数据,但对这份数据设 ......
缓存 场景 时间 redis

python操作redis--pipeline

如何使用pipeline: from redis.client import Redis conn = Redis(host="0.0.0.0",port=6379,db=0,password="") with conn.pipeline() as p: for i in range(100): p ......
pipeline python redis

设计模式--装饰者模式

1、前言 本文主要讲述装饰者模式,文中使用通俗易懂的案例 2、什么是装饰者模式 装饰者模式是23种设计模式中结构型模式的一种,它的核心思想是在不必改变类文件及不使用继承的情况下,通过装饰者包裹目标对象,动态地扩展目标对象的功能。 3、生活中的装饰者器模式 钢铁侠 托尼斯塔克,漫威著名的超级英雄钢铁侠 ......
模式 设计模式

1112.开发模式场景以及Git

一、开发模式与场景 1. 客户端和服务端 ①什么是服务端 理解服务端之前先搞清楚什么是服务器? 服务器就是提供网络服务的机器设备! 1. 高效提供网络服务;2. 多用户与用户组以及权限的管理; 3. 全年24小时不间断运行,无需关机重启。 那服务端是什么了? 就是运行在服务器上面提供具体网络服务的程 ......
场景 模式 1112 Git

Python+Redis学习笔记

首先,通过pip来安装操作redis的相关包,pip install redis 然后导入我们要使用的模块,form redis.Client import Redis 然后,通过docker启动redis, from redis.client import Redis r = Redis(host ......
笔记 Python Redis

界面控件DevExtreme工具栏 - 拥有全新的自适应模式/弹出窗口

本文涵盖了最近对DevExtreme JavaScript工具栏组件(v22.2)所做的更改,并简要描述了相关的实现细节。 DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQu ......
控件 工具栏 DevExtreme 界面 全新