5.Redis之常用数据结构单线程模型

  • 围绕每个数据结构介绍相关命令
  • 当前版本的redis支持10个数据类型

  • Redis 底层在实现上述数据结构的时候,
  • 会在源码层面,针对上述实现进行特定的优化,来达到 节省时间/节省空间 效果,
  • 内部的具体实现的数据结构(编码方式),还会有变数
  • redis 承诺,现在我这有个 hash 表,你进行 査询,插入, 删除 操作,都保证 O(1)
  • 但是,这个背后的实现,不一定就是一个标准的 hash 表.(内部可能会进行优化)
  • 可能再特定场景下,使用别的数据结构实现.
  • 但是仍然保证时间复杂度符合承诺!!

1.数据结构对应的编码方式 

内部编码方式,redis内部自适应

1.1 object encoding key

査看 key 对应的 value 的实际编码方式

redis 会自动根据当前的实际情况选择内部的编码方式.自动适应的,

2.单线程模型的工作过程

redis 只使用一个线程,处理所有的命令请求.

不是说一个 redis 服务器进程内部真的就只有一个线程,

其实也有多个线程,多个线程是在处理 网络IO

假设, 有多个客户端, 同时操作一个 redis 服务器

redis 能够使用 单线程模型 很好的工作,原因主要在于 redis 的核心业务逻辑, 都是短平快的~~不太消耗 cpu 资源也就不太吃多核了!!!【特殊情况,特殊处理具体问题,具体分析】

弊端!!redis 必须要特别小心,某个操作占用时间长,就会阻塞其他命令的执行!!

3.单线程为什么那么快(面试题)

快是相对而言(相对于数据库mysql)

1.redis 访问内存,数据库则是访问硬盘,

2.redis 核心功能,比数据库的核心功能更简单.

数据库对于数据的插入删除査询....都有更复杂的功能支持, 这样的功能势必要花费更多的开销比如,针对插入删除,数据库中的各种约束,都会使数据库做额外的工作,

redis 干的活少,提供的功能相比于 mysql 也是少了不少~~

3. 单线程模型,避免了一些不必要的线程竞争开销.

redis 每个基本操作,都是短平快的~~ 就是简单操作一下内存数据,不是什么特别消耗 cpu 的操作.就算搞多个线程,也提升不大~~

4. 处理网络IO 的时候, 使用了 epoll 这样的IO 多路复用机制~

  • 【示例】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/644524.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pikachu靶场中的CSRF、SSRF通关

目录 1、CSRF介绍 2、CSRF(get) 3、CSRF(post) 4、CSRF Token 5、SSRF介绍 6、SSRF(curl) 7、SSRF(file_get-content) 8、CSRF与SSRF的区别 最近在学习CSRF、SSRF漏洞&#…

LeetCode HOT 100:3. 无重复字符的最长字串

1. 链接 . - 力扣(LeetCode) 2. 题目描述 3. 题解 方法一:滑动窗口 哈希表 根据题意: 1. 遍历所有可能的子串——利用滑动窗口表示子串; 2. 保证滑动窗口内不包含重复字符——需要哈希表map记录字符出现的下标。…

PostgreSQL基本使用Schema

参考文章:PostgreSQL基本使用(3)Schema_pg数据库查询schema-CSDN博客 PostgreSQL 模式(Schema)可以理解为是一个表的集合(或者所属者)。 例如:在 MySQL 中,Scheam 是库&…

etcd集群部署

1.etcd介绍 1.1 什么是etcd etcd的官方定义如下: A distributed, reliable key-value store for the most critical data of distributed systemetcd是一个Go语言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值(key value)存储、配置共享和服务发现等…

Nginx-狂神说

Nginx概述 公司产品出现瓶颈? 我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。 但是慢慢的,使用我们平台…

C++ 常用UI库

AWTK github gitee doc scons 类似RT-Thread element github C Cross platfrom C GUI libraries,QT可替代方案。调试包 SDL GUI cegui 创作不易, 小小的支持一下吧!

如何在Windows 10上对硬盘进行碎片整理?这里提供步骤

随着时间的推移,由于文件系统中的碎片,硬盘驱动器可能会开始以较低的效率运行。为了加快驱动器的速度,你可以使用内置工具在Windows 10中对其进行碎片整理和优化。方法如下。 什么是碎片整理 随着时间的推移,组成文件的数据块&a…

YOLOv10详细解读 | 一文带你深入了解yolov10的创新点(附网络结构图 + 举例说明)

前言 Hello大家好,我是Snu77,继YOLOv9发布时间没有多久,YOLOv10就紧接着发布于2024.5.23号(不得不感叹YOLO系列的发展速度,但要纠正大家的观点就是不是最新的就一定最好)! 本文给大家带来的是…

Unity开发——XLua热更新之Hotfix配置(包含xlua获取与导入)

一、Git上获取xlua 最新的xlua包,下载地址链接:https://github.com/Tencent/xLua 二、Unity添加xlua 解压xlua压缩包后,将xlua里的Assets里的文件直接复制进Unity的Assets文件夹下。 成功导入后,unity工具栏会出现xlua选项。 …

vue3瀑布流示例,左侧菜单根据窗口滚动条进行固定和取消固定,实现瀑布流demo

瀑布流demo的实现效果: 效果说明: 1.使用vue3实现瀑布流效果; 2.瀑布流横向设置5等分,可根据个人需求调整; 3.左侧菜单可根据右侧滚动条滑动时进行固定和取消固定,实现更优的展示效果; 4.瀑…

Django 里html模板

Django 提供两种方式让程序员自定义html模板。 第一种方法 在项目文件夹里的urls.py进行添加 修改代码如下 from django.contrib import admin from django.urls import path from app01 import views # 得添加这行urlpatterns [path(xxx/, views.home), # 添加这行path(…

从0开始学统计-你能区分率和构成比吗?

1.数据的变异度如何描述? 数据的变异度描述了数据集中数值之间的差异或波动程度。常用的描述数据变异度的统计量包括: (1)范围(Range):范围是数据集中最大值与最小值之间的差异,表…

NDIS小端口驱动(九)

PCIe设备难免会遇到一些重置设备的请求,例如重置总线的时候,但是由于NIC网卡的多样性,重置设备确实也有许多要注意的地方,另外还有一些包含WDM的NDIS驱动 微型端口驱动程序硬件重置 微型端口驱动程序必须向 NdisMRegisterMinipo…

重新思考:Netflix 的边缘负载均衡

声明 本文是对Netflix 博客的翻译 前言 ​ 在先前关于Zuul 2开源的文章中,我们简要概述了近期在负载均衡方面的一些工作。在这篇文章中,我们将更详细地介绍这项工作的原因、方法和结果。 ​ 因此,我们开始从Zuul和其他团队那里学习&#…

L01_JVM 高频知识图谱

这些知识点你都掌握了吗?大家可以对着问题看下自己掌握程度如何?对于没掌握的知识点,大家自行网上搜索,都会有对应答案,本文不做知识点详细说明,只做简要文字或图示引导。 类的生命周期 类加载器 JVM 的内存…

CAD二次开发(2)-将直线对象添加到CAD图形文件

1. 准备工作 创建一个类库项目,如下: 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个&#xf…

2024年汉字小达人活动4个多月开赛:18道历年选择题和答案、解析

根据近年的安排,2024年第11届汉字小达人比赛还有4个多月就启动,那么孩子们如何利用这段时间有条不紊地备考呢?我的建议是两手准备:①把小学1-5年级的语文课本上的知识点熟悉,重点是字、词、成语、古诗。②把历年真题刷…

求两个整数最大公约数的方法

可以使用递归来实现,编写gcd函数返回最终的结果(最大公约数)。传入两个参数,如果存在一个数字不大于0就返回0,利用上面的公式就可以得出最后的结果。

电脑远程控制另一台电脑怎么弄?

可以远程控制另一台电脑吗? “你好,我对远程访问技术不太了解。现在,我希望我的朋友可以远程控制我的Windows 10电脑,以便她能帮我解决一些问题。请问,有没有免费的方法可以实现这种远程控制?我该如何操作…