Redis
文章平均质量分 86
燕然一勒
学技以傍身,然后可立足也
展开
-
Redis6.0为什么引入多线程
1. Reactor设计模式 Reactor 模式的基本设计思想是基于I/O复用模型来实现的。 这里说下I/O复用模型。和传统IO多线程阻塞不同,I/O复用模型中多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象等待。当某个连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。 什么意思呢?餐厅老板也发现了顾客点餐慢的问题,于是他采用了一种大胆的方式,只留了一个服务员。当客人点餐的时候,这个服务员就去招待别的客人,客人点好餐后直接喊服务员来进行服务。这里的顾客和服务原创 2021-01-03 21:49:48 · 663 阅读 · 0 评论 -
Redis的数据类型(对象)
1. 概述 在这篇Redis的底层数据结构中,我们介绍了Redis的底层数据结构。但是Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。我们可以把它们看作Redis的五个数据类型。即使是同一种数据类型,在不同的场景下,其底层数据结构可能是不一样的,这样做的目的是优化在不同场景下的使用效率。 首先明确,Redis中使用对象来表示数据库中的键和值,每当创建一个键值对时,我们会至少创建两个对象,一个键对象原创 2020-12-26 18:57:43 · 287 阅读 · 0 评论 -
Redis的底层数据结构
一、SDS(简单动态字符串) 1. SDS的定义 struct sdshdr{ //记录buf数组中已使用字节的数量(不包括空字符'\0') //等于 SDS 保存字符串的长度 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[]; } 如果SDS保存字符串"Redis",其结构如图所示: 2. SDS和C语言字符串的区别 2.1 数组大小 当原创 2020-12-25 21:27:30 · 105 阅读 · 0 评论