1 基本概念1.1 常见考点1、Redis 为何这么快?1)基于内存;2)单线程减少上下文切换,同时保证原子性;3)IO多路复用;4)高级数据结构(如 SDS、Hash以及跳表等)。2、为何使用单线程?官方答案因为 Redis 是基于内存的操作,CPU 不会成为 Redis 的瓶颈,而最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且 CPU 不会成为瓶颈,那就顺理成章地采用单线程的方
转载
2023-09-19 19:23:25
118阅读
1、为什么要用redis做缓存? 高性能: 假如用户第一次访问数据库中的某些数据,是从硬盘上读取的,速度比较慢。将这些数据存在缓存中,下次直接从缓存中取,速度很快,操作缓存就是直接操作内存。 高并发: 直接操作缓存能够承受的请求远远大于直接访问数据库。考虑将数据库中的部分数据转移到缓存中,这样用户的一部分请求会直接到缓存而不用经过数据库。2、Redis的两种持久化方式? 1)为什么要配持久化? 因
转载
2023-12-27 15:30:55
157阅读
最近在读黄健宏的《Redis设计与实现》,看完了第一部分,它是采用的自底向上的介绍方法。从最底层的数据结构开始,逐个介绍所用到的数据结构,最后形成数据库。我准备做个redis的学习笔记,这里我就自顶向下整理一下。服务器中的数据库redis服务器将所有数据库保存在服务器状态redis.h/redisServer结构的db数组中,db数组中的每项都是一个redis.h/redisDb的结构体,每个re
转载
2023-09-08 22:20:07
25阅读
redis底层原理基础面试题前言:由于正在准备之后的实习面试,故总结了一部分redis底层原理的问题,回答全为自己组织的语言,若有错各位大佬可及时指出,大家共同进步,谢谢。1.Redis的各个数据结构及使用场景redis中自主实现的数据结构主要有字符串、链表、字典、跳表、整数集合、压缩列表。 字符串作为最基本的数据结构类型,对于简单字符数组在安全性、效率及功能方面有所提升。底层结构中包含free\
转载
2023-07-11 13:24:08
75阅读
# 如何准备Java底层原理面试
## 一、整体流程
在准备Java底层原理面试时,需要遵循以下步骤:
| 步骤 | 内容 |
| --- | --- |
| 1 | 确定要学习的主题 |
| 2 | 深入研究每个主题 |
| 3 | 练习编写相关代码 |
| 4 | 总结并复习重点知识点 |
| 5 | 进行模拟面试 |
## 二、详细步骤及代码示例
### 1. 确定要学习的主题
原创
2024-07-03 05:23:16
32阅读
Redis的数据结构,可以在两个不同的层面来讨论它,第一个层面,是从使用者的角度。比如:string、list、hash、set、zset(sorted set)五种数据类型,这一层面也是Redis暴露给外部的调用接口。第二个层面,就是这五种数据类型的内部实现结构,属于更底层的实现。比如:dict(字典)、sds(simple dynamic string简单动态字符串)、intset(整数集合)
转载
2023-08-14 11:03:38
190阅读
# Redis底层原理解析
## 概述
在开始讲解Redis底层原理之前,我们需要了解Redis是什么,它的主要特点以及它的应用场景。Redis(REmote DIctionary Server)是一个开源的高性能键值存储系统,它支持多种数据结构(如字符串、哈希表、列表等),并提供了丰富的操作命令,可用于构建各种应用场景,如缓存、消息队列、计数器等。
Redis的底层原理主要包括以下几个方面:
原创
2023-07-22 04:16:31
67阅读
# Redis 底层原理实现指南
Redis 是一个开源的内存数据结构存储系统,它广泛用于缓存、会话存储等场景。了解其底层原理不仅能帮助你更好地利用 Redis,还能让你在进行系统设计时做出更明智的决策。本文将详细阐述 Redis 的底层原理,并提供实现流程。让我们开始吧!
## 流程概览
下面是实现 Redis 底层原理的基本流程:
| 步骤 | 描述
Redis的快速很多人都知道是因为基于内存,但这只是一方面,其实redis在底层是一套很完善的多路复用事件处理机制来保证执行的高效的线程模型 redis内部使用文件事件处理器file event handler,它包含如下几个部分多个socketIO多路复用程序文件事件分派器事件处理器(连接应答处理器,命令请求处理器,命令回复处理器)之所以说redis是单线程其实是指这个文件事件处理器是单线程的,
转载
2024-05-15 08:43:03
38阅读
Redis 简介Redis 是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的 Web 应用程序。Redis 也被作者戏称为 数据结构服务器 ,这意味着使用者可以通过一些命令,基于带有 TCP 套接字的简单 服务器-客户端 协议来访问一组 可变数据结构 。(在 Redis 中都采用键值对的方式,只
转载
2023-08-11 15:07:53
145阅读
一、redisObject在redis中基本的结构对象我们称之为RedisObject,其源码如下:typedef struct redisObject {
unsigned type:4;
unsigned encoding:4;
unsigned lru:LRU_BITS;
int refcount;
void *ptr;
} robj;其中:type:表示值的数据类型。encoding:值的
转载
2023-06-21 22:27:02
356阅读
Redis 哨兵机制以及底层原理深入解析,这次终于搞清楚了31 人赞同了该文章前面我们基于实际案例搭建了缓存高可用方案(分布式缓存高可用方案,我们都是这么干的)同时提到了redis主从架构下是如何保证高可用的,讲到了它是通过redis sentinel的机制来实现的。今天我们就来看看redis sentinel即哨兵机制的相关底层原理以及我们在生产中需要避的坑。什么是redis sentinel哨
转载
2024-08-12 20:41:57
27阅读
Redis(原理篇)
数据结构
动态字符串SDS
我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。
不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题
获取字符串的长度需要通过计算(应为c语言中其实没有字符串而是字符数组,通过最后的'\0'来表示结束,所以在计算数组长度的时候需要减去这个'\0
原创
2023-04-21 17:27:56
1302阅读
Redis 底层是用C语言进行编写的,常用的数据结构为动态字符串(SDS),InSet,Dict,ZipList QuikList SkipList动态字符串优点:1.动态字符串避开了传统字符串的缺点,不可进行改变,它是可以改变的;2.时间复杂度为O(1),时间复杂度小,性能好;3.支持动态扩容;4.减少内存分配次数;5.二进制安全;inset优点1.有序唯一的元素存储;2.类型升级机制,节省内存
转载
2023-07-04 17:54:43
103阅读
1.Redisson简介Redis 是最流行的 NoSQL 数据库解决方案之一,而 Java 是世界上最流行(注意,我没有说“最好”)的编程语言之一。虽然两者看起来很自然地在一起“工作”,但是要知道,Redis 其实并没有对 Java 提供原生支持。相反,作为 Java 开发人员,我们若想在程序中集成 Redis,必须使用 Redis 的第三方库。而 Redisson 就是用于在 Java 程序中
转载
2023-08-20 16:22:56
60阅读
前言Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数据结构和算法组成。Redis还提供了键过期,发布订阅,事务,Lua脚本,哨兵,Cluster等功能。Redis执行命令的速度非常快,根据官方给的性能可以达到10w+qps。那么本文主要介绍到底Redis
转载
2023-10-10 21:55:59
38阅读
一、简介Spring框架核心主要有两个:IOC和AOP。(一)、IOC容器IOC:控制反转,我们想实现一个功能,类A有可能调用到很多其他的接口,比如类B、类C中的方法,为了能调用别的类的方法,首先得取得这个类的实例,即在类A中new一个类B、再new一个类C,也就是说调用者负责创建被调用者的实例。这样的话,会造成类A中越来越臃肿,越来越不好管理;类B、类C需要不断的创建。引入Spring的IOC容
转载
2024-04-10 17:30:51
6阅读
① Spring IOC / DISpring IOC / DI概念将对象创建和属性赋值的权利,转移到spring工厂中完成,解耦和,提高了开发效率,极大提高了代码可维护性。Spring IOC / DI底层实现原理问题说明:Spring是如何通过配置文件,就完成了对象的创建和属性的赋值?答案:使用工厂设计模式 + 配置文件 + 反射描述: 使用工厂设计模式,在工厂中,根据配置文件中标签的clas
转载
2024-02-16 21:35:32
11阅读
一致性Hash原理和实现一、算法背景二、应用场景三、使用Hash算法四、一致性Hash的基本概念五、一致性Hash算法的容错性和可扩展性 一、算法背景一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P
转载
2023-07-12 15:50:54
89阅读
底层数据结构一共有 6 种,分别是简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。它们和数据类型的对应关系如下图所示: 为了实现从键到值的快速访问,Redis 使用了一个哈希表来保存所有键值对。一个哈希表,其实就是一个数组,数组的每个元素称为一个哈希桶。哈希桶中的元素保存的并不是值本身,而是指向具体值的指针。哈希表保存了所有的键值对,所以,我也把它称为全局哈希表。哈希表的最大
转载
2023-08-07 22:20:20
169阅读