如果面试官问我:Redis为什么这么快?我肯定会说:因为Redis是内存数据库!如果不是直接把数据放在内存里,甭管怎么优化数据结构、设计怎样的网络I/O模型,都不可能达到如今这般的执行效率。但是这么回答多半会让我直接回去等通知了。。。因为面试官想听到的就是数据结构和网络模型方面的回答,虽然这两者只是在内存基础上的锦上添花。说这些并非为了强调网络模型并不重要, ......
275
0
0
2023-03-13
目录1. Redis事件介绍2. 事件的抽象2.1 文件事件结构2.2 时间事件结构2.3 事件状态结构3. 事件的实现1. Redis事件介绍Redis服务器是一个事件驱动程序,所谓事件驱动就是输入一条命令并且按下回车,然后消息被组装成Redis协议的格式发送给Redis服务器,这个时候就会产生一个事件,Redis服务器会接收改命令,处理该命令和发送回复, ......
252
0
0
2023-02-23
目录Redis 网络连接库分析1. Redis网络连接库介绍2. 客户端的创建与释放2.1 客户端的创建2.2 客户端的释放3. 命令接收与命令回复3.1 命令接收3.2 命令回复4. CLIENT命令的实现Redis 网络连接库分析1. Redis网络连接库介绍Redis网络连接库对应的文件是networking.c,这个文件主要负责:客户端的创建与释放. ......
272
0
0
2023-02-23
目录1. 前言2. RDB2.1 手动触发2.2 自动触发3. bgsave大致流程4. RDB持久化方式的优缺点5. AOF6. AOF的使用方式7. AOF流程剖析7.1 命令写入7.2 文件同步7.3 重写机制7.4 重启加载8. 问题定位与优化8.1 关于fork操作8.2 关于子进程开销8.3 关于AOF追加阻塞1. 前言为什么要进行持久化?:持久 ......
228
0
0
2023-02-23
主从复制概述主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave已读为主 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复制 ......
320
0
0
2023-02-19
Redis 是一个key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sort ......
264
0
0
2023-02-12
目录过期删除策略设置Redis中key的过期时间 (单位:秒)常见的三种过期删除策略Redis使用用的过期删除策略Redis的定期删除的流程内存淘汰策略设置Redis最大运行内存Redis 内存淘汰策略有哪些?LRU 算法和 LFU 算法有什么区别?Redis 是如何实现 LRU 算法的?什么是 LFU 算法?Redis 是如何实现 LFU 算法的?过期删除 ......
307
0
0
2023-02-02
搬运,redis做消息队列的几种方法和优缺点从最简单的开始:List 队列首先,我们先从最简单的场景开始讲起。如果你的业务需求足够简单,想把 Redis 当作队列来使用,肯定最先想到的就是使用 List 这个数据类型。因为 List 底层的实现就是一个「链表」,在头部和尾部操作元素,时间复杂度都是 O(1),这意味着它非常符合消息队列的模型。如果把 List ......
293
0
0
2023-01-24
缓存雪崩和缓存穿透并不是一个概念缓存雪崩当缓存失效或缓存数据还没有准备就绪时,高并发请求接入时无法阻挡,从而接入数据库导致数据库宕机或者延迟,而数据库又被大量其他服务所依赖导致大面积服务崩溃,最终导致整个系统或网站的崩溃。解决方案:1、分布式锁:只有一个线程能获得锁,获得后判断缓存数据是否存在,不存在获取缓存数据并更新缓存,存在获得数据,其他线程阻塞,更新缓 ......
263
0
0
2023-01-18
前言前几天我在知乎看到一个问题:如何建立自己的知识体系和观点?^1^如何建立自己的知识体系和观点?在一篇高赞回答中讲述了建立“外脑”是关键,文章观点认为:大脑是用来思考的,不是用来记忆的。查理芒格我很认同这样的看法,我的账号名为“杨同学technotes”,technotes^2^ 源于我最近几年总结的 github 项目,意为“技术笔记”,这便是我的“外脑 ......
235
0
0
2023-01-14
作者:贲绍华爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。一、集群架构的一些基本概念当我们只使用一台 Redis 实例也就是 Single 架构时,需要考虑一些非常实际的问题,如:单节点一但宕机则业务停摆、单节点的容量不可能是无限制的、性能 ......
294
0
0
2023-01-08
大家好,我是杰哥。Redis 现在应该是各大厂标配了,不过可能很多人只懂得怎么用,但对其原理不甚了解,今天我们就用图解的形式来深入了解 Redis 高性能,高可用的秘密什么是 Redis?Redis(REmote DIctionary Service)是一个开源的键值对数据库服务器。Redis 更准确的描述是一个数据结构服务器。Redis 的这种特殊性质让它 ......
279
0
0
2023-01-05
一、SDS介绍Redis没有使用C语言传统的字符串表示(以空字符结尾的字符串数组,以下简称C字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS作为Redis默认的字符串表示。在 Redis 里面, C字符串只会作为字符串字面量(string literal), 用在一些无须对字符串值进 ......
313
0
0
2023-01-03
Redis网络连接层Redis取自Remote Dictionary Server,顾名思义,Redis是运行在网络环境之上的。Redis目前支持3种网络连接类型:TCP:默认监听TCP 6379端口,接收网络请求,提供服务。Unix Socket:可以用作测试,以及使用Unix Socket做配置变更等。TLS:使用TLS加密的网络连接,可以防止网络链路上 ......
344
0
0
2022-12-31
Hello 大家好,我是阿粉,Redis 作为工作中不可缺少的缓存组件,相信很多小伙伴都会使用到,我们日常使用的时候都是通过代码或者客户端去链接 Redis 服务器来操作数据的。那么一条简单的set name ziyou 命令是如何执行的,中间都经历了哪些过程想必很少会有人去了解。今天阿粉就带大家看一下一条简单的set name ziyou 命令是如何执行的 ......
234
0
0
2022-12-28